如何高效处理Laravel框架中的错误和异常?
- 内容介绍
- 文章标签
- 相关推荐
本文共计651个文字,预计阅读时间需要3分钟。
直接改写如下:
怎么在 render() 里区分网页请求和 API 请求
Laravel 默认对两者返回不同响应,但你得主动判断,不能只靠 $request->isJson() —— 它不可靠,很多前端发 JSON 时没带 Content-Type: application/json。
- 用
$request->expectsJson()才是正确姿势,它同时检查Accept头、X-Requested-With和请求路径是否含/api/ - 网页请求走 Blade 错误页(如
resources/views/errors/404.blade.php),API 请求必须返回标准 JSON 结构 + 正确 HTTP 状态码 - 别在
render()里调用dd()或抛新异常,否则可能触发递归崩溃 - 对
ModelNotFoundException,网页返回 404 视图,API 返回response()->json(['message' => 'Not found'], 404)
QueryException 的错误信息为什么总显示 “Integrity constraint violation”
因为 Laravel 把原始数据库错误包在了 $exception->getPrevious() 里,直接打 $exception->getMessage() 只能看到通用提示,查不到具体字段和值。
本文共计651个文字,预计阅读时间需要3分钟。
直接改写如下:
怎么在 render() 里区分网页请求和 API 请求
Laravel 默认对两者返回不同响应,但你得主动判断,不能只靠 $request->isJson() —— 它不可靠,很多前端发 JSON 时没带 Content-Type: application/json。
- 用
$request->expectsJson()才是正确姿势,它同时检查Accept头、X-Requested-With和请求路径是否含/api/ - 网页请求走 Blade 错误页(如
resources/views/errors/404.blade.php),API 请求必须返回标准 JSON 结构 + 正确 HTTP 状态码 - 别在
render()里调用dd()或抛新异常,否则可能触发递归崩溃 - 对
ModelNotFoundException,网页返回 404 视图,API 返回response()->json(['message' => 'Not found'], 404)
QueryException 的错误信息为什么总显示 “Integrity constraint violation”
因为 Laravel 把原始数据库错误包在了 $exception->getPrevious() 里,直接打 $exception->getMessage() 只能看到通用提示,查不到具体字段和值。

