finallyの使い方 | try…catch構文 | JavaScript 超完全入門 基本から発展までのすべて

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

finallyとは?

try...catch構文では、通常、例外が発生した場合にcatchブロックでエラーを処理します。しかし、エラーが発生しても、またはエラーが発生しなくても、常に実行されるコードが必要な場合があります。finallyブロックは、そのような状況で利用されます。finallyブロックは、例外が発生するかどうかにかかわらず、必ず実行される部分です。

try…catch…finallyの構文

以下は、try...catch...finally構文の基本的な形です。

try {
    // エラーが発生する可能性のあるコード
} catch (error) {
    // エラーが発生した場合に実行されるコード
} finally {
    // エラーが発生してもしなくても必ず実行されるコード
}

finallyブロックの役割

finallyブロックは、次のような状況で役立ちます。

  • 外部リソースを使用した後に必ずクリーンアップが必要な場合(例: ファイルやデータベース接続の閉鎖)。
  • エラー処理が終わった後に、UIの状態を更新したり、処理を完了する必要がある場合。

プログラムの解説

次に、finallyを使った例を示します。

try {
    throw new Error("何かが間違っています"); // 意図的にエラーを発生
} catch (error) {
    console.error("エラーが発生しました: " + error.message); // エラーをキャッチ
} finally {
    console.log("必ず実行される処理"); // 例外の有無に関わらず実行
}

この例では、tryブロック内で意図的にエラーを発生させ、catchブロックでエラーをキャッチしています。エラーの有無に関わらず、finallyブロック内の処理は必ず実行されます。

finallyブロックの実行タイミング

finallyブロックは、エラーが発生した場合も発生しなかった場合も実行されますが、その実行タイミングはtryおよびcatchブロックの後です。以下の表で実行の流れを確認できます。

状況 tryブロック catchブロック finallyブロック
エラーなし 実行される スキップされる 実行される
エラーあり 実行される 実行される 実行される

finallyを使用するシーン

実際のアプリケーションでfinallyを使用するシーンには、以下のようなものがあります。

  • API呼び出し後にローディングインジケーターを非表示にする処理。
  • データベース接続を終了する処理。
  • 一時ファイルを削除するクリーンアップ処理。

まとめ

try...catch...finally構文を使用すると、例外が発生した場合でも確実に実行しなければならない処理をfinallyブロックに書くことができます。finallyブロックは、エラーが発生したかどうかに関わらず、必ず実行されるため、リソースの解放やクリーンアップなどの操作に非常に便利です。プログラムが例外によって途中で停止することを防ぎ、スムーズなエラーハンドリングを実現します。