手动抛出错误离子2

Posted

技术标签:

【中文标题】手动抛出错误离子2【英文标题】:Manually throw error ionic 2 【发布时间】:2018-02-21 00:02:06 【问题描述】:

我正在与一个webservice通信,返回可以是负数或porisitvo,会落入调用成功,但是如果返回负数我需要手动抛出异常

 .map(res => res.json())
  .subscribe(res => 
    let returno = JSON.parse(res.d);  
    if (returno.status == 'success') 
      this._loggedIn(returno);
     else 
      throw returno;
    
  , err => 
    console.error('ERROR', err);
  );

【问题讨论】:

***.com/questions/40511948/… 的副本 那也行不通 什么不起作用?请详细说明.. 【参考方案1】:

您可以在 JS 中通过将对象传递给 throw 来引发异常。所以throw err在你的情况下。

【讨论】:

不要那样工作!我需要打这一行 console.error('ERROR', err);【参考方案2】:

我希望您希望所有订阅者都以相同的方式处理错误?因此,您可以在 Observable 级别而不是 Subscriber 级别处理错误。

因此,您可以执行以下操作:

public tryLogin(url: string): Observable<any> 
  return this.http.get(url)
    .map(res => res.json().d)
    .map(res => 
      if (res.status !== 'success') 
        Observable.throw(res);
      

      return res;
    );

那么你可以通过以下方式调用这段代码:

this.tryLogin('mydata')
  .subscribe(
    data => this._loggedIn(data),
    err => console.log(err);
  )

这种方法的好处是,如果您不希望您的订阅者知道发生了什么,您可以将其抽象化并在 next 回调中对它们进行身份验证,或者在 @ 中处理失败事件987654324@回调。

【讨论】:

以上是关于手动抛出错误离子2的主要内容,如果未能解决你的问题,请参考以下文章

离子服务抛出此错误代码请帮助

成功构建后由于谷歌播放服务导致离子抛出错误

运行离子服务时出错:[ng] 错误:Angular 编译器需要 TypeScript >=4.4.2 和 <4.5.0,但找到了 4.5.2

离子错误:尝试diff'[object Object]'时出错

离子项目构建错误

添加平台并使用离子科尔多瓦构建时出错?