为什么这个 PHP 异常没有被捕获?

Why is this PHP exception not caught?

我有这个非常简单的 PHP 8 代码,其中有(自愿的)错误。只是为了看看异常是否被捕获。

try {
        $school = $this->schoolRepository->insert($request->all());
        $fake = 1 / 0;
        return new SchoolResource($school);
    } catch (\Exception $e) {
        return response()->json('bad request' . $ex->getMessage(), 400);
    }

惊喜!未捕获异常。我收到除法错误:

 {
"message": "Division by zero",
"exception": "DivisionByZeroError",
"file": "D:\Workspace\school-back-v2\app\Http\Controllers\SchoolController.php",
"line": 48,
"trace": [

为什么没有捕获到这个异常?

DivisionByZeroError继承自Error,所以你最好赶上基础接口Throwable.

catch (\Throwable $e)

更改return response()->json('bad request' . $ex->getMessage(), 400);到 return response()->json('bad request' . $e->getMessage(), 400);