JavaScript/finally
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
ブロックがそれぞれ独立して実行されます。