2017-10-15 10 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.runGuarded에서 observer.nextobserver.error 포장 작성자, 제출 된 오류뿐만 아니라 각도 오류 처리기로 제공됩니다.