Yii错误异常处理
背景
当程序中出现不可预期的错误,比如说除0异常,yii会给我们扔出这个异常信息,由于现在都是读写分离,客户端调你的api,都是协商好的数据格式,如果业务方没有兼容你的异常返回,客户端出现异常错误,影响也挺恶心。
再者,写些脚本的时候,出现不可预期的异常没有记到日志中,对于我们排查错误也是大大的麻烦。好在,yii提供错误处理,看看官方文档:错误处理
默认的错误处理是 (web)https://www.yiichina.com/doc/api/2.0/yii-web-errorhandler (console)https://www.yiichina.com/doc/api/2.0/yii-console-errorhandler,
通过重写renderException方法,就可以达到自定义的错误输出。
web错误处理
web.php 配置:
...
'errorHandler' => [
'class' => 'app\controllers\ErrorController',
'errorAction' => 'site/error',
],
...
ErrorController.php
<?php
namespace app\controllers;
use app\modules\Common;
use Yii;
class ErrorController extends \yii\web\ErrorHandler{
protected function renderException($exception){
//todo 业务处理异常
//if( Yii::$app->request->getIsPost() && !Yii::$app->request->get('fullerror')){
// return Common::echoJson(500, $exception->getMessage());
//}
parent::renderException($exception);
}
}
console错误处理
console.php
...
'errorHandler' => [
'class' => 'app\commands\ErrorController'
],
ErrorController.php
<?php
namespace app\commands;
use Yii;
use yii\helpers\FileHelper;
use yii\log\FileTarget;
use yii\log\Logger;
class ErrorController extends \yii\base\ErrorHandler{
protected function renderException($exception){
//业务处理异常
$errMsg = "文件位置:{$exception->getFile()} 所在行:{$exception->getLine()}\n". "错误:".$exception->getMessage();
self::writeLog('sys_exception.log',date('Y-m-d H:i:s') . "{$errMsg}\n");
}
public static function writeLog($fileName, $message,$categories='')
{
$logPath = Yii::$app->getRuntimePath() . '/logs/' . date("Ymd") . "/";
FileHelper::createDirectory($logPath);
$file = new FileTarget();
$file->logFile = $logPath . $fileName;
$file->messages[] = [$message, Logger::LEVEL_INFO, $categories, time()];
$file->export();
}
}
Yii错误异常处理的更多相关文章
- PHP7语法知识(三):时间与日期、表单、类与对象、正则表达式、错误异常处理、图像处理
时间与日期 一.设置时区 1.在配置文件中设置: 2.通过data_default_timezone_set函数在文件中设置: 二.获取当前时间 三.常用时间处理方法 1.格式化时间显示: 2.计算时 ...
- 【六】php 错误异常处理
错误异常处理 概念:代码在try代码块被调用执行,catch代码块捕获异常 异常需要手动抛出 throw new Exception (‘message’,code) throw将出发异常处理机制 在 ...
- EBS OAF开发中的错误/异常处理(ErrorHandling) (转)
原文地址 EBS OAF开发中的错误/异常处理(ErrorHandling) EBS OAF开发中的错误/异常处理(ErrorHandling) (版权声明,本人原创或者翻译的文章如需转载,如转载用于 ...
- 2017.10.28 针对Java Web应用中错误异常处理方法的运用
针对Java Web应用中错误异常处理方法的运用 在javaweb中其异常都需要对Checked Exception之下的Exception进行继承,并且有选择地对发生的错误和异常进行处理.Java同 ...
- YII Framework学习教程-YII的异常处理
异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的.YII框架封装了PHP的异常,让异常处理起来更简单. 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII ...
- YII 错误 SQLSTATE[HY000] [2002] No such file or directory
在使用yii的yii\db\Connnection时发生错误 <?php namespace app\controllers; use yii\web\Controller; use yii\d ...
- 从C#到Objective-C,循序渐进学习苹果开发(4)--代码块(block)和错误异常处理的理解
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本文继续上一篇随笔<从 ...
- python学习第十八天 --错误&异常处理
这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题. 异常:执行 ...
- VB.NET之错误异常处理
相对于VB而言,VB.NET中引入了很多特色.当中最吸引我的就是引入了结构化异常处理. 尽管VB.NET仍然支持OnError Goto类型的异常处理,可是这样做并非非常好.相比而言,结构化异常处理更 ...
随机推荐
- jquery做个折叠面板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mongodb的权限操作
一.开启权限认证 1.windows下的mongodb开启权限认证 C:\Users\Administrator>sc delete MongoDB //原来创建的服务如果没有开启 则删除 [S ...
- vue学习--vue项目端口不固定,无法指定问题
写于20190819 前面是自己解决的思路,后面是解决方法以及需要记住的一些更改 package.json 之前只知道vue项目是基于node.js,对node.js了解不是很深入,项目的开始文件是p ...
- MyBatis:Error evaluating expression ''''. Return value () was not iterable错误
Error evaluating expression ''''. Return value () was not iterable 出现原因:xml文件中遍历List 时,该参数的实际值为非Lis ...
- 2018-2019-2 网络对抗技术 20165311 Exp 8 Web基础
2018-2019-2 网络对抗技术 20165311 Exp 8 Web基础 基础问题回答 实践过程记录 1.Web前端:HTML 2.Web前端:javascipt 3.Web后端:MySQL基础 ...
- 如何从DOS命令窗口进行复制粘贴
在DOS窗口没有右键复制按钮,那我们如果想要进行复制粘贴该如何操作呢?本篇就来说明一下这个操作流程. 工具/原料 WIN7系统 方法/步骤 按“WIN+R”调出运行页面,在其中输入CMD然 ...
- matlab将多张图片合成视频
文件夹内多张图合成为视频: route='D:\文件及下载相关\桌面\**\Matlab_code\result';%基本路径 %d=dir([route '\*.bmp']);%.jpg格式 Wri ...
- javascript已存在的对象构造器中是不能添加新的属性的:
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程 ...
- Flutter布局基本情况总结:
1.一行内容,发布两边: 效果: Flex( direction: Axis.horizontal, children: <Widget>[ Expanded( flex: , child ...
- myeclipse启动的过程中没提示就自动退出,闪退的有效解决方法
今天遇到一个问题,已经打开myeclipse的电脑因为非正常关机后myeclipse打不开了,进度条进到十分之一就闪退,什么提示都没有的解决方案如下: 1.打开myeclipse工作空间(存放项目 ...