finallyコマンド
ブロックfinallyは、tryおよびcatch構文と組み合わせて例外を処理するために使用されます。finally内のコードは、tryブロックの成功時にも例外発生時にも、いずれの場合も実行されます。
構文
try {
// 例外を引き起こす可能性のあるコード
} catch (Exception $e) {
// 例外の処理
} finally {
// いずれの場合も実行されるコード
}
例
コードが正常に実行される例:
<?php
try {
$res = 10 / 2;
echo "Result: " . $res . "\n";
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
echo "This will always execute\n";
}
?>
コードの実行結果:
Result: 5
This will always execute
例
例外処理の例:
<?php
try {
$res = 10 / 0;
echo "Result: " . $res . "\n";
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
echo "This will always execute\n";
}
?>
コードの実行結果:
Exception: Division by zero
This will always execute
例
リソース解放のためのfinallyの使用:
<?php
$file = fopen("example.txt", "r");
try {
// ファイル操作
if ($file) {
echo "File opened successfully\n";
}
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
} finally {
if ($file) {
fclose($file);
echo "File closed in finally block\n";
}
}
?>
コードの実行結果:
File opened successfully
File closed in finally block