You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8中如何显示RecordsNotFoundException自定义异常消息?

自定义RecordsNotFoundException消息不显示,返回默认404的解决办法

你抛出RecordsNotFoundException时传入了自定义消息,但系统返回的是默认的404 | NOT FOUND,而非预期的Record with id :123 not found, please try different Id。相关代码:

if (empty($data)) throw new RecordsNotFoundException('Record with id :123 no found, please try different Id');

核心原因

框架默认异常处理逻辑未针对RecordsNotFoundException做自定义配置,直接将其映射为通用404错误,导致自定义消息被覆盖。另外你代码里有个拼写错误:no found应为not found,建议修正。

解决步骤

  • 配置框架异常处理器,绑定自定义异常的响应
    以常见PHP框架(如Laravel)为例,找到异常处理类(如app/Exceptions/Handler.php),在register方法中添加针对该异常的渲染逻辑:

    use App\Exceptions\RecordsNotFoundException;
    
    $this->renderable(function (RecordsNotFoundException $e, $request) {
        // 根据需求返回JSON或视图,此处以JSON响应为例
        return response()->json([
            'error' => $e->getMessage()
        ], 404);
    });
    

    配置后,异常触发时会直接返回你传入的自定义消息,而非默认404页面。

  • 确认自定义异常类的实现正确
    确保RecordsNotFoundException正确继承基础异常类,且未重写getMessage()方法导致消息丢失:

    class RecordsNotFoundException extends \Exception
    {
        // 无需额外代码,继承父类即可正常传递自定义消息
    }
    
  • 检查环境调试配置(仅调试阶段)
    生产环境下框架通常会隐藏详细错误信息,调试阶段可临时开启APP_DEBUG=true(如.env配置文件),确保自定义异常消息正常输出;生产环境则通过异常处理器强制返回自定义消息,避免暴露敏感信息。

内容的提问来源于stack exchange,提问作者Liju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 23:10:57