2017-10-15 4 views
0

によってキャッチされないです私のカスタムハンドラーかどうか。 WebSQLでトランザクションを開始した後に例外がスローされた場合、エラーはキャッチされず、代わりにコンソールに未キャッチエラーとして記録されます。一部のエラーは、私がエラーをスローする場合によっては、それはどちらかキャッチされるなど</p> <p>をリモートエラートラッカーにエラーを送り角度4でカスタムエラーハンドラを、開発していますカスタムエラーハンドラ

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

例外は角度コードの外側で発生するため、デフォルトの角度エラーハンドラは考慮されません。

これを防ぐには、アイテムがオブザーバーに提出されたときに、角度ゾーン内で行われるようにしてください。 角度が正確にそれを行うことができます以下のクラスを提供:NgZone.runGuardedobserver.nextobserver.errorを包むことでhttps://angular.io/api/core/NgZone

を、提出したエラーは、同様に角度誤差ハンドラに与えられます。

関連する問題