12 异常处理
前置知识
1 和PHP默认的异常处理不同,ThinkPHP抛出的不是单纯的错误信息,而是一个人性化的错误页面。
2 新版的异常页面显示会自动判断当前请求是json请求,如果是json请求则采用json格式的异常信息,否则按照HTML输出
一 异常显示
1 异常页面的模板位置:vendor\topthink\framework\src\tpl\think_exception.tpl
2 修改异常页面路径:在config/app.php配置文件中 'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl',
3 默认的异常页面会返回 500 状态码,如果是一个 HttpException 异常则会返回HTTP的错误状态码。
二 异常接管
自己定义异常类 暂时还用不到
三 手动抛出和捕获异常
系统异常大部分的都是自动抛出和捕获的
手动抛出异常 throw new \think\Exception('异常消息',1000);
四 HTTP异常
public function hello(){ throw new \think\exception\HttpException(404,'异常消息'); //抛出HTTP异常 abort(404,'我也异常了'); //助手函数抛出HTTP异常 }
1)如果是api接口
1 现在客户端判断状态码是否正常,再进行处理
2 如果遇到错误状态码,应该自行给出错误提示。
3 部署模式下一旦抛出 HttpException异常,可以单独定义异常模板页面
'http_exception_template' => [ // 定义404错误的模板文件地址 404 => \think\facade\App::getAppPath() . '404.html', // 还可以定义其它的HTTP status 401 => \think\facade\App::getAppPath() . '401.html', ]
http_exception_template 配置仅在部署模式下面生效。