PHPで0で割り算した時の例外がキャッチできない
Q&A
Closed
解決したいこと
PHPで0で割り算した時の例外をキャッチできるようにしたいです。
発生している問題・エラー
0で割り算した箇所をtry,ctachで囲んでいますが例外がキャッチできずに、
そのまま処理が落ちてしまいます。
該当するソースコード
以下の関数を呼び出しています。
private function divideBy0(){
try {
Log::debug("divideBy0_L362");
// 例外が発生する可能性がある処理
$num = 0;
echo 10 / $num;
} catch (Throwable $e) {
Log::debug("divideBy0_L367");
Log::error("[divideBy0でエラーが発生] " . $e->getMessage());
// 例外を再スローするか、適切なエラーメッセージを返すなどの処理を行う
throw $e;
}
}
ログには以下のように出力されます。
うまくcatchの中に入っていないようです。
[2023-12-27 11:27:56] local.DEBUG: divideBy0_L362
[2023-12-27 11:27:56] local.ERROR: Division by zero {"exception":"[object] (DivisionByZeroError(code: 0): Division by zero at /var/www/html/lpar/app/Http/Controllers/ItemController.php:365)
[stacktrace]
#0 /var/www/html/lpar/app/Http/Controllers/ItemController.php(100): App\\Http\\Controllers\\ItemController->divideBy0()
自分で試したこと
chatGPTに聞いたら
catch (Exception $e) ではなく
catch (Throwable $e)とすると
Exception だけでなく Error などもキャッチできるようになります。 と回答されたので試してみましたが、
やはりcatchの中に入ってくれませんでした。
環境
いただいたdockerでapache使って動かしています。
0