最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

yii2自定义错误处理

来源:动视网 责编:小采 时间:2020-11-03 18:22:58
文档

yii2自定义错误处理

yii2自定义错误处理:在 Yii2 使用中,我们发现一但程序出现错误,Yii2 就能自动显示其专用的错误提示界面,和我们写原生态时出现的错误提示界面完全不一样。它究竟是怎么做到的呢:是在哪里设置监听的?亦或在哪里用的try catch。 (推荐学习:yii框架)其实 PHP 有自己
推荐度:
导读yii2自定义错误处理:在 Yii2 使用中,我们发现一但程序出现错误,Yii2 就能自动显示其专用的错误提示界面,和我们写原生态时出现的错误提示界面完全不一样。它究竟是怎么做到的呢:是在哪里设置监听的?亦或在哪里用的try catch。 (推荐学习:yii框架)其实 PHP 有自己


在 Yii2 使用中,我们发现一但程序出现错误,Yii2 就能自动显示其专用的错误提示界面,和我们写原生态时出现的错误提示界面完全不一样。

它究竟是怎么做到的呢:是在哪里设置监听的?亦或在哪里用的try catch?”。 (推荐学习:yii框架)

其实 PHP 有自己专用的错误处理 API, 当程序出现问题时,可以自动调用指定函数。而 Yii2 正是利用这一点,在其启动的时候,使用 PHP 内置的 set_error_handler 将自己的错误处理注册进步并关闭 PHP 自身的错误显示。

Yii2 错误自定义处理

在 官方教程 中,它告诉我们要开启自定义的错误,需要进行如下配置组件:

return [
 // ...
 
 'components' => [
 // ...
 
 'errorHandler' => [
 'errorAction' => 'site/error',
 ],
 ]
 
 // ...
];

Yii2 错误核心处理方法

在 Yii2 错误自定义处理 中我们了解了 Yii2 错误注册的原理并知道错误的发生后,Yii2 将调用 yiiwebErrorHandler 类对象的 handleException 和 handleError 方法。

其实 yiiwebErrorHandler 类中并没有 handleException 和 handleError 方法,但是在其基类 yiiaseErrorHandler 有,这两个函数最终都将调用 yiiwebErrorHandler 的 renderException 方法,代码如下:

# yiiwebErrorHandler
/**
 * Renders the exception.
 * @param Exception $exception the exception to be rendered.
 */
protected function renderException($exception)
{
 // ...
 // 注意:控制错误是否能自定义的关键
 // !YII_DEBUG 表示了如果你现在是在 Debug 模式下,那么不能自定义错误
 // 即使你配置了组件的 'errorHandler' => ['errorAction' => 'site/error'] 参数
 $useErrorView = $response->format === Response::FORMAT_HTML && (!YII_DEBUG || $exception instanceof UserException);
 // 传递到自定义错误处理方法
 if ($useErrorView && $this->errorAction !== null) {
 $result = Yii::$app->runAction($this->errorAction);
 if ($result instanceof Response) {
 $response = $result;
 } else {
 $response->data = $result;
 }
 }
 
 // ...
}

在最终的错误显示方法 renderException 我们可以看出:自定义的错误需要在非 DEBUG 模式下才能生效

文档

yii2自定义错误处理

yii2自定义错误处理:在 Yii2 使用中,我们发现一但程序出现错误,Yii2 就能自动显示其专用的错误提示界面,和我们写原生态时出现的错误提示界面完全不一样。它究竟是怎么做到的呢:是在哪里设置监听的?亦或在哪里用的try catch。 (推荐学习:yii框架)其实 PHP 有自己
推荐度:
标签: 处理 自定义 错误
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top