tp5 异常处理

2018-11-14 13:25:39
200
PHP ThinkPHP


在app_debug 为 true的情况下 tp抛出异常会这样子显示



关闭 app_debug 以后 



我们可以通过设置 app.php 中的 exception_tmpl参数来指定显示 错误页面


// 异常页面的模板文件
    'exception_tmpl'         => Env::get('think_path') . 'tpl/think_exception.tpl',



异常处理接管


我们需要定义 app.php 中的 exception_handle 来接管处理

// 异常处理handle类 留空使用 \think\exception\Handle
    'exception_handle'       => '\\app\\common\\exception\\Http',


image.png


我们在 common模块下新建 exception文件夹 建立Http.php 处理类,


我们直接实现 官方的 栗子


<?php
namespace app\common\exception;use Exception;
use think\exception\Handle;
use think\exception\HttpException;
use think\exception\ValidateException;
class Http extends Handle{
    public function render(Exception $e)
    {
        // 参数验证错误
        if ($e instanceof ValidateException) {
            return json($e->getError(), 422);
        }

        // 请求异常
        if ($e instanceof HttpException && request()->isAjax()) {
            return response($e->getMessage(), $e->getStatusCode());
        }

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


我们需要在Http中重新定义 Handle的 render方法  用来接管异常处理 


官方的栗子说的比较清楚了,大家可以直接试试


$e->getMessage()   获取错误信息

$e->getStatusCode()     获取错误码


最新评论
总共 0 条评论
还没有评论,快来抢沙发吧!