如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
1.捕获异常
2.处理异常(记录日志 或者 修复异常 或者 返回客户端)
3.抛出异常
try{ $banner = ..... }catch(Exception $ex) { $err = [ 'error_code=>'10001, 'msg'=>$ex->getMessage() ]; return json($err,400); }
200是正确获得内容,并非执行成功
异常
1.用户行为导致的异常
不需要记录日志
需要向用户返回错误信息
2.服务器自身的异常
记录日志
不向用户返回具体原因
全局异常处理
新建application/lib/exception/ExceptionHandler.php
引入think\exception\Handle;
引入think\Exception;
继承Handle
覆盖render方法
class ExceptionHandle extend Handle { public function render(Exception $ex) { return ..... } }
config 异常处理设置
'excepton_handle'=>'app\lib\exception\ExceptionHandle',
获取当前的url
$request=Request::instance();
$url = $request->url();
tp5日志
config.php 中的 'log'
日志保存路径:LOG_PATH
常量的定义:start.php
日志的默认路径: runtime/log
自动记录日志:
系统默认
自定义记录日志:
更改日志目录:
在入口文件添加如下:
define('LOG_PATH',__DIR__.'/../log/');
关闭日志
config.php------log---'type'=>'test';
记录日志,放在全局错误中
private function recordErrorlog(Exception $e) {Log::init([ 'type'=>'File, 'path'=>LOG_PATH, 'level'=>['error] ])//日志初始化 Log::record($e->getMessage(),'error); }
异常错误json 与HTML 格式转换:
在config定义个常量
使用系统的错误: return parent::render($e);
if(){ //用户自定义的错误显示信息 }else{ //系统的错误信息 if(config('err') == true){ //使用系统的HTML方法显示异常 }else{ //使用用户自定义的json显示异常 } }