行为主体 vs Observable 错误处理

Mor*_*lus 5 error-handling rxjs angular

我在 Angular 中使用 rxJS 并且有一组作为只读 Observable 公开的行为主题

public _data = new BehaviorSubject<DataItem[]>([]);
public readonly data$ = this._data.asObservable();
Run Code Online (Sandbox Code Playgroud)

现在我注意到,如果我直接订阅BehaviorSubject并且出现错误,它会将错误抛出到控制台。

但是如果我订阅 Observable 时出现同样的错误,我不会收到任何消息,然后监听器会自动取消订阅。

我知道这是预期的行为,但是......

我想知道避免错误代码重复的模式是什么,例如

this.myDataService.data$.subscribe(d=> throwSomeError(), e=> handleError(e));
//or use this:
this.myDataService.data$.subscribe(d=> throwSomeError()).catch(e=> handleError(e));
Run Code Online (Sandbox Code Playgroud)

句柄错误(e)

Dea*_*alk 0

第二个选项会更好,因为BehaviorSubject 总是会在出现错误时终止流。

以下是更多信息:

如何在行为主体上抛出错误并继续流?