TypeScript:
エラー処理

方法:

TypeScriptでは、エラー処理には多くの場合trycatchfinallyブロックが関わってきます。

function riskyOperation() {
  throw new Error("何か問題が発生しました!");
}

function handleErrors() {
  try {
    riskyOperation();
  } catch (error) {
    console.error("エラーをキャッチしました:", error.message);
  } finally {
    console.log("これは常に実行されます、エラーがあろうとなかろうと。");
  }
}

handleErrors();

サンプル出力:

エラーをキャッチしました:何か問題が発生しました!
これは常に実行されます、エラーがあろうとなかろうと。

プロミスを用いた非同期の例:

async function asyncRiskyOperation() {
  return new Promise((resolve, reject) => {
    // エラーをシミュレート
    reject("ひどく失敗しました");
  });
}

async function handleAsyncErrors() {
  try {
    await asyncRiskyOperation();
  } catch (error) {
    console.error("非同期エラーをキャッチしました:", error);
  }
}

handleAsyncErrors();

サンプル出力:

非同期エラーをキャッチしました:ひどく失敗しました

深堀り

エラー処理はプログラミングの礎石であり、始まりから存在しています。JavaScriptを基にしたTypeScriptでは、ECMAScript 2017でのasync/awaitの導入により、エラー処理がより堅牢になりました。それ以前は、非同期コード内のエラーを処理するためにコールバック関数やプロミスに頼ることが多かったです。

TypeScriptでtry/catchの代わりに使用できる代替手段として、Reactのようなフレームワークによるエラーバウンダリがあります。サーバー側での処理には、Express.jsのようなプラットフォームでミドルウェアを使用してエラー管理を一元化することができます。

実装上では、TypeScriptには独自のエラー処理機構はなく、JavaScriptのものに依存しています。カスタムエラークラスはErrorクラスを拡張して、より記述的なエラー情報を提供することができます。

関連項目