Skip to content

エラーハンドリング

スローされたエラーは良いことです!これはランタイムがあなたのプログラムで問題が発生したタイミングを正常に特定し、現在のスタックでの関数実行を停止し、(Nodeでは)プロセスを終了させ、コンソールでスタックトレースを表示して通知していることを意味します。

キャッチしたエラーを無視しない

キャッチしたエラーを何も処理しないと、そのエラーを修正したり対応したりすることができません。エラーをコンソールに記録する(console.log)だけでは不十分です。コンソールに出力された他の情報に埋もれてしまうことが多いからです。コードをtry/catchで囲むということは、そこでエラーが発生する可能性を考えているということです。したがって、エラーが発生した場合の対応策を用意するか、コードパスを作成する必要があります。

悪い例:

javascript
try {
  functionThatMightThrow();
} catch (error) {
  console.log(error);
}

良い例:

javascript
try {
  functionThatMightThrow();
} catch (error) {
  // One option (more noisy than console.log):
  console.error(error);
  // Another option:
  notifyUserOfError(error);
  // Another option:
  reportErrorToService(error);
  // OR do all three!
}

リジェクトされたPromiseを無視しない

try/catchでキャッチしたエラーを無視すべきでないのと同様の理由で、リジェクトされたPromiseも無視すべきではありません。

悪い例:

javascript
getdata()
  .then(data => {
    functionThatMightThrow(data);
  })
  .catch(error => {
    console.log(error);
  });

良い例:

javascript
getdata()
  .then(data => {
    functionThatMightThrow(data);
  })
  .catch(error => {
    // One option (more noisy than console.log):
    console.error(error);
    // Another option:
    notifyUserOfError(error);
    // Another option:
    reportErrorToService(error);
    // OR do all three!
  });