# 时间时区子系统ChangeLog ## cl.time.1 接口异常抛出变更 时间时区子系统定时器接口异常抛出:202非系统应用异常和401参数无效异常。 **变更影响** 该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,增加相应的异常处理,原有功能不受影响。 **关键接口/组件变更** 变更前: - 接口异常抛出message,无错误码。 变更后: - 接口异常抛出message和code,包括202非系统应用异常和401参数无效异常。 | 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 | | ----------------- | ----------- | ------------------------------------------------------------ | -------- | | @ohos.systemTimer | systemTimer | function createTimer(options: TimerOptions, callback: AsyncCallback): void | 变更 | | @ohos.systemTimer | systemTimer | function createTimer(options: TimerOptions): Promise | 变更 | | @ohos.systemTimer | systemTimer | function startTimer(timer: number, triggerTime: number, callback: AsyncCallback): void | 变更 | | @ohos.systemTimer | systemTimer | function startTimer(timer: number, triggerTime: number): Promise | 变更 | | @ohos.systemTimer | systemTimer | function stopTimer(timer: number, callback: AsyncCallback): void | 变更 | | @ohos.systemTimer | systemTimer | function stopTimer(timer: number): Promise | 变更 | | @ohos.systemTimer | systemTimer | function destroyTimer(timer: number, callback: AsyncCallback): void | 变更 | | @ohos.systemTimer | systemTimer | function destroyTimer(timer: number): Promise | 变更 | **适配指导** 应用中调用systemTimer所有接口可参考下列代码进行异常捕获 createTimer callback形式调用: **示例:** ```js export default { systemTimer () { let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat: false }; try { systemTimer.createTimer(options, (error, timerId) => { if (error) { //捕获权限否定异常 console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`); } console.info(`Succeeded in creating timer. timerId: ${timerId}`); }); } catch(e) { //捕获参数校验失败异常 console.info(`Failed to create timer. message: ${e.message}, code: ${e.code}`); } } } ``` createTimer promise形式调用: **示例:** ```js export default { systemTimer () { let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat: false }; try { systemTimer.createTimer(options).then((timerId) => { console.info(`Succeeded in creating timer. timerId: ${timerId}`); }).catch((error) => { //捕获权限否定异常 console.info(`Failed to create timer. message: ${error.message}, code: ${error.code}`); }); } catch(e) { //捕获参数校验失败异常 console.info(`Failed to create timer. message: ${e.message}, code: ${e.code}`); } } } ``` startTimer callback形式调用: **示例:** ```js export default { async systemTimer () { let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat:false } let timerId = await systemTimer.createTimer(options); let triggerTime = new Date().getTime(); triggerTime += 3000; try { systemTimer.startTimer(timerId, triggerTime, (error) => { if (error) { //捕获权限否定异常 console.error(`Failed to start timer. message: ${error.message}, code: ${error.code}`); } }); } catch (e) { //捕获参数校验失败异常 console.info(`Failed to start timer. message: ${e.message}, code: ${e.code}`); } } } ``` startTimer promise形式调用: **示例:** ```js export default { async systemTimer (){ let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat:false } let timerId = await systemTimer.createTimer(options); let triggerTime = new Date().getTime(); triggerTime += 3000; try { systemTimer.startTimer(timerId, triggerTime).then((data) => { console.log(`Succeeded in startting timer. Data:` + data); }).catch((error) => { //捕获权限否定异常 console.info(`Failed to start timer. message: ${error.message}, code: ${error.code}`); }); } catch (e) { //捕获参数校验失败异常 console.info(`Failed to start timer. message: ${e.message}, code: ${e.code}`); } } } ``` stopTimer callback形式调用: **示例:** ```js export default { async systemTimer () { let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat:false } let timerId = await systemTimer.createTimer(options); let triggerTime = new Date().getTime(); triggerTime += 3000; systemTimer.startTimer(timerId, triggerTime); try { systemTimer.stopTimer(timerId, triggerTime, (error) => { if (error) { //捕获权限否定异常 console.error(`Failed to stop timer. message: ${error.message}, code: ${error.code}`); } }); } catch (e) { //捕获参数校验失败异常 console.info(`Failed to stop timer. message: ${e.message}, code: ${e.code}`); } } }git ``` stopTimer promise形式调用: **示例:** ```js export default { async systemTimer (){ let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat:false } let timerId = await systemTimer.createTimer(options); let triggerTime = new Date().getTime(); triggerTime += 3000; systemTimer.startTimer(timerId, triggerTime); try { systemTimer.stopTimer(timerId, triggerTime).then((data) => { console.log(`Succeeded in stop timer. Data:` + data); }).catch((error) => { //捕获权限否定异常 console.info(`Failed to stop timer. message: ${error.message}, code: ${error.code}`); }); } catch (e) { //捕获参数校验失败异常 console.info(`Failed to stop timer. message: ${e.message}, code: ${e.code}`); } } } ``` destroyTimer callback形式调用: **示例:** ```js export default { async systemTimer () { let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat:false } let timerId = await systemTimer.createTimer(options); let triggerTime = new Date().getTime(); triggerTime += 3000; systemTimer.startTimer(timerId, triggerTime); systemTimer.stopTimer(timerId); try { systemTimer.destroyTimer(timerId, triggerTime, (error) => { if (error) { //捕获权限否定异常 console.error(`Failed to destroy timer. message: ${error.message}, code: ${error.code}`); } }); } catch (e) { //捕获参数校验失败异常 console.info(`Failed to destroy timer. message: ${e.message}, code: ${e.code}`); } } } ``` destroyTimer promise形式调用: **示例:** ```js export default { async systemTimer (){ let options = { type: systemTimer.TIMER_TYPE_REALTIME, repeat:false } let timerId = await systemTimer.createTimer(options); let triggerTime = new Date().getTime(); triggerTime += 3000; systemTimer.startTimer(timerId, triggerTime); systemTimer.stopTimer(timerId); try { systemTimer.destroyTimer(timerId, triggerTime).then((data) => { console.log(`Succeeded in destroy timer. Data:` + data); }).catch((error) => { //捕获权限否定异常 console.info(`Failed to destroy timer. message: ${error.message}, code: ${error.code}`); }); } catch (e) { //捕获参数校验失败异常 console.info(`Failed to destroy timer. message: ${e.message}, code: ${e.code}`); } } } ``` ## cl.time.2 接口异常抛出变更 时间时区子系统时间相关接口异常抛出:201权限否定异常、202非系统应用异常和401参数无效异常。 **变更影响** 基于此前版本开发的应用,继续使用无影响,使用新接口需要捕获并处理抛出的新异常。 **关键接口/组件变更** 变更前: - 接口异常抛出message,错误码-1。 变更后: - 接口异常抛出message和code,包括201权限否定异常、202非系统应用异常和401参数无效异常。 原接口中标记为废弃的接口,可以使用新接口中的同名接口替换 | 原接口 | 新接口 | | ---------------- | -------------------- | | @ohos.systemTime | @ohos.systemDateTime | **适配指导** 应用中调用systemTime所有接口可参考下列代码进行异常捕获,以setTime接口为例,其他接口适配方法相同。 callback形式调用: **示例:** ```js import systemDateTime from @ohos.systemDateTime // time对应的时间为2021-01-20 02:36:25 let time = 1611081385000; try { systemDateTime.setTime(time, (error) => { //捕获权限否定异常和非系统应用异常 if (error) { console.info(`Failed to setting time. message: ${error.message}, code: ${error.code}`); return; } console.info(`Succeeded in setting time.`); }) } catch(e) { //捕获参数校验失败异常 console.info(`Failed to set time. message: ${e.message}, code: ${e.code}`); } ``` promise形式调用: **示例:** ```js import systemDateTime from @ohos.systemDateTime // time对应的时间为2021-01-20 02:36:25 let time = 1611081385000; try { systemDateTime.setTime(time).then(() => { console.info(`Succeeded in setting time.`); }).catch((error) => { //捕获权限否定异常和非系统应用异常 console.info(`Failed to setting time. message: ${error.message}, code: ${error.code}`); }); } catch(e) { //捕获参数校验失败异常 console.info(`Failed to set time. message: ${e.message}, code: ${e.code}`); } ```