2017-10-15 108 views
0

我正在開發中角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對象。

有沒有經驗的人?

回答

0

在角碼之外引發異常,因此不會考慮默認的角度錯誤處理程序。

爲了防止這種情況發生,請確保將項目提交給觀察者時,它將在角度區域內完成。 角度提供了以下類就可以這樣做:https://angular.io/api/core/NgZone

通過包裝在NgZone.runGuardedobserver.nextobserver.error,提交錯誤將給予轉角誤差處理爲好。

相關問題