Laravel通过Handler类处理异常,支持自定义异常类与错误页面。1. 使用report()记录异常,render()返回响应;2. 创建如InsufficientBalanceException等自定义异常并抛出;3. 在Handler的render中拦截并返回JSON响应;4. 在resources/views/errors/下创建404、500等Blade视图;5. 确保APP_DEBUG=false以显示自定义页;6. 用abort(404)测试;7. 在report()中集成Sentry或过滤不需记录的异常。

在 Laravel 中,异常处理是应用健壮性的重要组成部分。框架内置了强大的异常处理机制,默认会将异常记录并返回合适的响应。但实际开发中,我们经常需要自定义异常处理方式或显示美观的错误页面。本文将带你一步步掌握 Laravel 的异常处理机制和如何自定义错误页面。
理解 Laravel 异常处理机制
Laravel 使用 App\Exceptions\Handler 类来处理所有抛出的异常。这个类有两个主要方法:
- report():用于记录异常或发送通知(如 Sentry)
- render():将异常转换为 HTTP 响应返回给用户
未捕获的异常都会经过这里,你可以根据异常类型进行不同处理。
自定义异常类
当项目逻辑中出现特定错误时(比如“余额不足”、“订单已取消”),建议创建自定义异常类,让代码更清晰。
1. 创建自定义异常在终端运行命令:
php artisan make:exception InsufficientBalanceException
登录后复制
生成的文件位于 app/Exceptions/InsufficientBalanceException.php,你可以设置默认消息和状态码:
public function __construct($message = "余额不足", $code = 400)
{
parent::__construct($message, $code);
}
登录后复制
2. 抛出并处理自定义异常在控制器中直接使用:
use App\Exceptions\InsufficientBalanceException; throw new InsufficientBalanceException();
登录后复制
你可以在 Handler 的 render 方法中拦截它:
use App\Exceptions\InsufficientBalanceException;
public function render($request, Throwable $exception)
{
if ($exception instanceof InsufficientBalanceException) {
return response()->json([
'error' => 'balance_error',
'message' => $exception->getMessage()
], $exception->getCode());
}
return parent::render($request, $exception);
}
登录后复制
自定义错误页面(404、500 等)
Laravel 支持为不同 HTTP 状态码返回自定义视图页面,提升用户体验。
标签: 异常处理 laravel php js json app 路由 状态码 环境配置
还木有评论哦,快来抢沙发吧~