catchError
能捕獲異常疹蛉,且需要返回一個Observable
辉阶,代碼里的throw
创倔、throwError
及其他JS錯誤均能被該操作符捕獲携丁。
需要注意的是琢歇,catchError
捕獲到異常后,數(shù)據(jù)源將不再執(zhí)行梦鉴。
代碼示例
- 不添加
catchError
from([1,2,3,4,5,6]).pipe(
tap(v => {
if (v == 3) throw 'err'
})
).subscribe()
// console
1 2 error
- 添加
catchError
給from
from([1,2,3,4,5,6]).pipe(
tap(v => {
if (v == 3) throw 'err'
}),
catchError(err => of(err))
).subscribe()
// console
1 2 'err' complete
- 添加
catchError
給高階函數(shù)
from([1,2,3,4,5,6]).pipe(
mergeMap(v => {
return of(v).pipe(
tap(v => {
if (v == 3) throw 'err'
}),
catchError(err => of(err))
)
})
).subscribe()
// console
1 2 'err' 4 5 6 complete