2017-10-03 12 views
2
import {NgModule, ErrorHandler} from '@angular/core'; 

class MyErrorHandler implements ErrorHandler { 
    handleError(error:any) { 
    // do something with the exception 
    console.log('Error',error); 
    } 
} 

私は、生成された例外をキャッチするためにErrorHandlerを使用しています。 キャッチされたエラーのタイプはERRORですが、ここでクラスエラーのタイプはerror:anyで、console.log( 'Error'、error);エラーオブジェクトの種類がanyであるため、Error Uncaught (in promise): [object Object]を出力します。タイプanyのエラーをエラータイプのエラーに変更するにはどうすればよいですか?

handleError(error:any)のエラーオブジェクトをERRORに変更するにはどうすればよいですか?

答えて

0

Typescriptは実行時にタイプチェックされません。 Error IS anyanyは単に「任意のオブジェクト」を意味します)オブジェクトを使用してhandleError(error: any)を呼び出すことは完全に有効です。

これは、javascriptへの移行中の型チェックの「オプトアウト」のようなものです。

あなたが言ったときには:「エラーが発生しました(約束しています):エラーオブジェクトのタイプとして[オブジェクトオブジェクト]があります」というメッセージが表示された場合、「任意の」タイプのエラーが発生している可能性があります。オブジェクトをコンソールに印刷すると、コンソールにはのように表示されます(ただし、コンソールには、対話型オブジェクトが表示されているChromeのコンソールのような素晴らしい構文解析機能があります)。 jsonが必要な場合:error.toJSON()を実行すると、エラーオブジェクトのすべてのフィールドが表示され、実際にErrorかどうかを確認できます。

私はあなたの線に沿って何かをしたい疑う:

console.log('Error', error.message); 

私はエラーが私の頭の上をオフに持っているフィールドのか分かりません。もちろん

handleError(e: any) { 
    // do something with the exception 
    const error as Error; 
    console.log('Error', error.message); 
} 

誰が非エラーオブジェクト(またはオブジェクトの上にそれを使用している場合、それは破る:あなたがどちらかない場合は、あなたがコードを書いているとき、物事は簡単にするためにasコマンドを使用することができますそれにはmessageが含まれていないので、おそらく小切手をするのが最善でしょう。

handleError(e: any) { 
    // do something with the exception 
    const error as Error; 
    if (error.message) { 
     console.log('Error', error.message); 
    } else { 
    console.log('Unspecified error!'); 
    } 
} 
関連する問題