有些错误是未捕获通过自定义错误处理程序
问题描述:
我正在开发中角4自定义错误处理程序,它发送错误远程错误跟踪等有些错误是未捕获通过自定义错误处理程序
根据当我抛出错误的,它要么被抓由我的自定义处理程序或不。如果我在WebSQL中启动一个事务后抛出异常,错误将不会被捕获,而是作为未捕获的错误在控制台中记录。
private executeSql<T>(sql: SqlStatement): Observable<T> {
return Observable.create((observer) => {
// If i throw exception before this.storage.transaction, the exception will be caught
this.storage.transaction((tx) => {
// Do it here, and it will not
tx.executeSql(sql.statement, sql.params,
(t, result) => {
let resultRows = this.parseRowsFromResult(result);
for (let i = 0; i < resultRows.length; i++) {
observer.next(resultRows[i]);
}
observer.complete();
},
(t, error) => {
observer.error(error.message.toString());
return true;
});
});
});
}
this.storage
是一个WebSQL对象。
有没有经验的人?
答
在角码之外引发异常,因此不会考虑默认的角度错误处理程序。
为了防止这种情况发生,请确保将项目提交给观察者时,它将在角度区域内完成。 角度提供了以下类就可以这样做:https://angular.io/api/core/NgZone
通过包装在NgZone.runGuarded
的observer.next
和observer.error
,提交错误将给予转角误差处理为好。