解決したいこと
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使って動かしています。

回答3件
あなたの回答
tips
プレビュー