Laravel 中异常和 QueryException 的区别

Difference between Exception and QueryException in Laravel

Laravel中的Exception和Illuminate\Database\QueryException有什么区别 当我在 try catch 中使用它时。

Exception 来自 php,QueryException 来自 laravel 并从 php 扩展 PDOException,后者又扩展了 Exception,因此所有异常 class 都是异常

异常非常普遍

所以如果你有一个 QueryException,它与 eloquent 和你所做的查询有关,它比 Exception 更具体,Exception 可以是任何东西

QueryException 的作用只是将 (SQL: ...) 添加到异常消息中

当您使用 try catch 时,Exception 将捕获任何内容,包括 QueryException,而 QueryException 将仅捕获 QueryException,而不会捕获 EntryNotFoundException,例如来自 laravel 或 [=23= 的任何其他异常]

如果捕获 PDOException,QueryException 也会被捕获,因为 QueryException extends PDOException