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