从广义上来讲,所有的不合理的都可以称之为异常,但是又可以为特定异常定义更详细的处理规则。
1、异常处理
1.1、常见异常
控制器不存在
1.2、异常处理
// 异常页面的模板文件
'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl',
// 错误显示信息,非调试模式有效
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => true,
异常模版文件这个是必须的,可以在应用的app.php文件中重新定义
// web/config/app.php
return [
// 异常页面的模板文件
'exception_tmpl' => app()->isDebug() ?
app()->getThinkPath() . 'tpl/think_exception.tpl' :
root_path().'template'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR . 'common' .DIRECTORY_SEPARATOR .'exception.html',
];
1.3、show_error_msg 选项
默认为 false,显示如下

此时,可以配合 error_message 来自定义 错误显示信息
当show_error_msg 为 true 时,会显示具体的错误信息,示例如下:

2、控制器方法不存在时处理逻辑(可选)
可以在基类控制器自定义控制器方法不存在时的处理逻辑,现在感觉这一步不太需要
/**
* 当控制器方法找不到时处理逻辑
* @param $method
* @param $args
* @return View
*/
public function __call($method, $args)
{
$this->assign('returnHomeUrl', getHomePageUrl());
return $this->view('common/error');
}
3、内容不存在时处理逻辑
在基类控制器写一个通用的内容不存在时的处理逻辑,内容被删除时使用。
/**
* 页面不存在时处理逻辑
* @return View
*/
public function http404(): View
{
return $this->view('common/404', [], 404);
}