thinkphp6使用自定義異常類


創建自定義異常類基類 app/lib/exception/BaseException.php

<?php


namespace app\lib\exception;

use Exception;
use Throwable;

class BaseException extends Exception
{
    public $code = 400;
    public $msg = '發生錯誤';
    public $statusCode = 500;

    public function __construct($params = [])
    {
        if (!is_array($params)) return;
        if (array_key_exists('code', $params)) $this->code = $params['code'];
        if (array_key_exists('msg', $params)) $this->msg = $params['msg'];
        if (array_key_exists('statusCode', $params)) $this->statusCode = $params['statusCode'];

    }
}

創建自定義異常類 app/lib/exception/ExceptionHandler.php

<?php


namespace app\lib\exception;

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

class ExceptionHandler extends Handle
{
    public $code;
    public $msg;
    public $statusCode;//http狀態碼

    public function render($request, Throwable $e): Response
    {
        if ($e instanceof BaseException) {
            $this->code = $e->code;
            $this->msg = $e->msg;
            $this->statusCode = $e->statusCode;
        } else {
            // debug開啟 顯示默認的異常
            if (env('APP_DEBUG')) return parent::render($request, $e);
            $this->code = 500;
            $this->msg = '服務器異常';
            $this->statusCode = 500;
        }
        $res = [
            'msg' => $this->msg,
            'code' => $this->code,
        ];
        return json($res, $this->statusCode);
    }
}

修改thinkphp6異常類使用自定義的異常類 app/provider.php

<?php
use app\lib\exception\ExceptionHandler;
use app\Request;
use app\ExceptionHandle;

// 容器Provider定義文件
return [
    'think\Request'          => Request::class,
    'think\exception\Handle' => ExceptionHandler::class,
//    'think\exception\Handle' => ExceptionHandle::class,
];

在控制器中使用拋出自定義異常類 app/index/controller/Index.php

<?php


namespace app\index\controller;

use app\BaseController;
use think\facade\Request;
use app\lib\exception\BaseException;

class Index extends BaseController
{
    public function index()
    {
        throw (new BaseException(['code'=>400,'statusCode'=>404,'msg'=>'異常']));
        return '111';
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM