博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ionic 调用restful API services时全局错误处理的实现 或自定义错误处理的实现
阅读量:5051 次
发布时间:2019-06-12

本文共 1564 字,大约阅读时间需要 5 分钟。

往往我们的ionic程序需要调用API Service. 比如天气,地图等等。当这些API Service 不稳定或者不可访问时,我们可以通过在注册一个自定义的ErrorHandler, 来处理此类错误。

 

1.   将自定义错误处理类作为provider,  也就是Service.   在终端使用命令: ionic g provider GlobalErrorHandler .  ionic generate 命令行定义可以参考

2.     实现GlobalErrorHandler, 完整代码如下。

 import { ErrorHandler, Injectable } from '@angular/core';

import { AlertController } from 'ionic-angular';

@Injectable()

export class GlobalErrorHandler extends ErrorHandler {

  constructor(public alertCtrl: AlertController) {

    super();

  }

  handleError(error: any): void {

     super.handleError(error);

    // IMPORTANT: Rethrow the error otherwise it gets swallowed

    if (error) {

      if (error.status === 0 && error.name === 'HttpErrorResponse' && error.statusText === 'Unknown Error') {

        this.showAlert(' 后台服务遇到了问题,目前正在修复中,请稍后访问,给您带来不便,深表歉意。');

        //It's better to add this to log file.

      }

    }

  }

  showAlert(subTitleText) {

    let alert = this.alertCtrl.create({

      title: '发生错误!',

      subTitle: subTitleText,

      buttons: ['确定']

    });

    alert.present();

  }

}

3.   在 \src\app\app.module.ts 中注册 GlobalErrorHandler  . 以下是代码片段, 请关注粗体部分。

import { GlobalErrorHandler } from '../providers/global-error-handler/global-error-handler';

@NgModule({

  declarations: [...],

  imports: [...],

  bootstrap: [IonicApp],

  entryComponents: [

    MyApp 

  ],

  providers: [

     {provide: ErrorHandler, useClass: GlobalErrorHandler},

      //  IMP. GlobalErrorHandler should be here, otherwise it would not be triggered.

     GlobalErrorHandler

  ]

})

export class AppModule {}

 

这样的话,我们就在ionic程序中引入了全局错误处理。 一旦第三方的services 或者我们自己的service 发生错误不可访问时, 页面将会有Alert弹出。 如下图所示。

 

 

转载于:https://www.cnblogs.com/caiyaming/p/9219126.html

你可能感兴趣的文章
pytho logging
查看>>
Python内置函数(29)——help
查看>>
《大道至简》读后感——论沟通的重要性
查看>>
java中Hashtable和HashMap的区别(转)
查看>>
对Feature的操作插入添加删除
查看>>
git使用中的问题
查看>>
yaml文件 .yml
查看>>
phpcms 添加自定义表单 留言
查看>>
mysql 优化
查看>>
WCF 配置文件
查看>>
oracle导出/导入 expdp/impdp
查看>>
2018.11.15 Nginx服务器的使用
查看>>
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
数据结构之查找算法总结笔记
查看>>
Android TextView加上阴影效果
查看>>
「Foundation」集合
查看>>
RijndaelManaged 加密
查看>>
Android 音量调节
查看>>