TP6不可预知的内部异常处理

TP公共文件异常

  • 对于不可预知的内部异常,可以通过app/ExceptionHandle(公共文件)文件内设置。
class E extends BaseController
{
    public function index()
    {
    //echo 未定义的变量
        echo "$ads";
    }
}
public function render($request, Throwable $e): Response
    {
        // 添加自定义异常处理机制
        //未定义的变量,异常代码
        return show(config("status.error"),$e->getMessage());

        // 其他错误交给系统处理
        //return parent::render($request, $e);
    }

开发者模式下的异常提示

TP分层结构,异常处理

由于运用了架构分层,多个模块(admin模块、user模块等模块)都有不同的异常处理,需要分开处理。
简单说就是针对某个模块制定一个或多个异常处理
针对你想要制定的模块,在controller文件夹中建立一个异常处理控制器,然后书写逻辑代码(以下代码是以demo模块为例子)。

<?php
namespace app\demo\exception;

use think\exception\Handle;
use think\Response;
use Throwable;

class Http extends Handle{
    public $httpStatus = 500;
    public function render($request, Throwable $e): Response
    {
        // 添加自定义异常处理机制
        return show(config("status.error"),$e->getMessage(),[],$this->httpStatus);

    }
}

保存后,系统并不能识别到此段代码,需在该模块app目录下,配置一个新的provieder.php文件。

<?php
use app\ExceptionHandle;
use app\Request;

// 容器Provider定义文件
return [
    'think\exception\Handle' => 'app\\demo\\exception\\http',
];

即可访问本模块下的异常处理。
新的目录结构:在这里插入图片描述

ThinkPHP 6 (TP6) 中,自定义异常处理是一个重要的实践,它允许开发者创建自己的错误和异常处理器,以便更好地控制程序流程和提供更友好的错误信息。以下是TP6中自定义异常处理的基本步骤: 1. **创建异常类**:首先,你需要创建一个继承自`Illuminate\Foundation\Exceptions\Handler`的类,例如`App\Exceptions\CustomExceptionHandler`。在这个类中,你可以定义具体的异常处理逻辑。 ```php namespace App\Exceptions; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; use Throwable; class CustomExceptionHandler extends ExceptionHandler { // ... 自定义处理方法 ... public function render($request, Throwable $exception) { return parent::render($request, $exception); } // 添加其他处理方法,如记录日志、返回特定错误页面等 } ``` 2. **注册异常处理类**:在`app/Http/Kernel.php`文件中,你需要将你的自定义异常处理器注册到`$container->resolve('Illuminate\Contracts\Http\Kernel')->setException_handler()`函数里。 ```php protected $exception_handlers = [ // 其他已存在的异常处理器... \App\Exceptions\CustomExceptionHandler::class, ]; ``` 3. **异常响应**:在`render`方法中,你可以定制异常的响应格式,比如使用JSON格式返回错误信息,或者渲染特定的视图。 ```php public function render($request, Throwable $exception) { if ($exception instanceof CustomException) { // 对于自定义的异常,可以有专门的处理逻辑 return response()->json([ 'message' => $exception->getMessage(), 'code' => $exception->getCode(), ], $exception->getStatusCode()); } // 使用默认的异常处理逻辑 return parent::render($request, $exception); } // ... 其他自定义处理逻辑... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值