手动抛出错误离子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