finally

編集

finally は、JavaScript において、try...catch...finally 文の一部として使用されるキーワードです。finally ブロックは、エラーの発生有無に関わらず、必ず実行されるコードを記述するために使用されます。これにより、リソースの解放や後処理などを確実に行うことができます。

構文

編集
try {
  // 試行するコード
} catch (error) {
  // エラーが発生した場合の処理
} finally {
  // 常に実行されるコード
}

説明

編集
  • try ブロック内のコードが正常に実行された場合、または catch ブロックでエラーが処理された場合でも、finally ブロックは必ず実行されます。
  • finally ブロックは省略可能ですが、後処理を確実に行いたい場合に便利です。
  • finally ブロックが存在する場合、その実行は return 文や throw 文が try または catch ブロック内にあっても影響を受けません。

使用例

編集
try {
  console.log('Trying...');
  throw new Error('Something went wrong');
} catch (error) {
  console.error('Caught an error:', error.message);
} finally {
  console.log('Finally block executed');
}

この例では、finally ブロックがエラーの発生に関係なく実行されます。

リソース解放の例

編集
function readFile(fileName) {
  let fileHandle;
  try {
    fileHandle = openFile(fileName);
    // ファイルを処理するコード
  } catch (error) {
    console.error('Error reading file:', error.message);
  } finally {
    if (fileHandle) {
      closeFile(fileHandle);
      console.log('File closed');
    }
  }
}

この例では、ファイル操作中にエラーが発生しても、finally ブロックを使ってファイルハンドルを確実に解放します。

注意点

編集
  • finally ブロックが実行された後も、エラーが再スローされる場合があります。エラーの処理を完全に防ぐには、catch ブロックで適切に対処する必要があります。
  • ネストされた try...catch...finally 文では、外側と内側の finally ブロックがそれぞれ独立して実行されます。

関連項目

編集

参考

編集