エラーはエンジンによってスローされ、例外は開発者によってスローされます。 しかし、正確にはどういう意味ですか? JavaScriptでは、すべての例外は単にオブジェクトです。 例外の大部分はグローバルエラークラスの実装ですが、古いオブジェクトはすべてスローできます。 これを念頭に置いて、例外をスローする方法は二つあります:直接エラーオブジェクトを介して、カスタムオブジェクトを介して。,
汎用例外
組み込みのエラークラスは、ファイル名、行番号、スタックトレースなど、かなりよく定義されていますが、それについては、メモすべき最も重要なことは、メッセージです。 エラーのインスタンス化中に渡される最初の、そして多くの場合、唯一のパラメータであるメッセージは、人間が読めるエラーであり、多くの場合、エンドユーザーに 一般的な例外をスローするのは、聞こえるのと同じくらい簡単です。, 必要なのは、エラーコンストラクタの最初のパラメータがエラーメッセージである例外オブジェクトをインスタンス化し、それを”スロー”することです。
throw new Error('Exception message');
エラー。コード対エラー。message
エラーメッセージは人間が読めるエラーデータですが、ノードであることに注意することが重要です。jsは、スローされるエラーの種類を識別するエラーコードも提供します。 この値は、エラー内に含まれているメッセージに関係なく、スローされる可能性のあるエラーにプログラムで適応できるため便利です。,
エラーコードは一般的にシステムエラーに使用されますが、errorクラスを拡張してカスタムエラーを作成する場合(詳細は後述のカスタム例外を参照)、カスタムコードを定義し、より構造化されたエラー定義に使用することができます。
カスタム例外
任意のオブジェクトをスローすることは可能ですが、新しいクラスでエラーオブジェクトを拡張することをお勧めします。 これをサポートする環境では、自動スタックトレースなどの機能を例外応答に含めることができます。,
カスタム例外オブジェクトを作成した場合、他のエラーと同様にスローするだけです。
throw new CustomException('Exception message');
一般的なエラーをスローするのではなく、エラーオブジェクトを拡張するもう一つの大きな利点は、エラーに追加のメタデータを含めて後で取得できることです。 プレーンテキストメッセージだけでは不十分な場合があるため、これはデバッグやエラー報告に非常に役立ちます。 たとえば、問題のデバッグに役立つローカル変数または状態の値を含めることができます。,
function CustomException(message, metadata) { const error = new Error(message); error.metadata = metadata; return error;}
エラーオブジェクトに含まれるデータの外で、Javascript用Rollbar notifierを使用する場合、追加データもレポートに含まれます。 この背景状況情報などのブラウザでユーザーです。
// Caught errorstry { doSomething();} catch (e) { Rollbar.error("Something went wrong", e);}
コンソールへの書き込み
JavaScriptでは、コンソールはすべてのログを見つけることができます(Javascriptエラーはどこに記録されますか?). しかし幸いなことに実際のデータの書き出しのコンソールは非常に簡単です。 そのためには、単なるのです。,log()メソッドで、ログに書き込みたいメッセージを指定します。
console.log("Top level");
Leave a Reply