<?phpheader("Content-type:text/html;charset=utf-8");// try// {// ????//业务处理 错误时抛出异常。// ????$age = 130;// ????if ($age > 120) {// ????????throw new Exception(‘年龄不能大于120岁。‘, 1001);// ????}// } catch (Exception $e) {// ????$err = [// ????????‘code‘ => $e->getCode(),// ????????‘msg‘ ?=> $e->getMessage(),// ????????‘file‘ ???=> $e->getFile(),// ????????‘line‘ ??=> $e->getLine()// ????];// ????echo json_encode($err,JSON_UNESCAPED_UNICODE);// }/*** 自定义异常处理*/// class myException extends Exception// {// ????//根据业务需求,自定义方法// ????/**// ?????* 获取错误信息// ?????* @param int $type 类型 1=json 2=数组// ?????* @return array// ?????*/// ????public function getErrorInfo($type=1)// ????{// ????????$err = [// ????????????‘code‘=>$this->getCode(),// ????????????‘msg‘=>$this->getMessage(),// ????????????‘file‘=>$this->getFile(),// ????????????‘line‘=>$this->getLine()// ????????];// ????????if($type==1){// ????????????return json_encode($err,JSON_UNESCAPED_UNICODE);// ????????????exit();// ????????}// ????????return $err;exit();// ????}// }// ????try{// ????????$age = ‘130‘;// ????????if($age>120){// ????????????throw new myException("年龄不能大于120岁。", 1001);// ????????}// ????}catch(myException $e){// ????????$info = $e->getErrorInfo(1);// ????????var_dump($info);// ????}catch(Exception $e){// ????????var_dump($e->getMessage);// ????}//禁止错误输出error_reporting(0);//设置错误处理器set_error_handler(‘errorHandler‘);//在脚本结束时运行的函数register_shutdown_function(‘fatalErrorHandler‘);/** * 错误处理 * @param int ???$err_no ?????错误代码 * @param string $err_msg ?错误信息 * @param string $err_file ???错误文件 * @param int ???$err_line ????错误行号 * @return string */function errorHandler($err_no = 0, $err_msg = ‘‘, $err_file = ‘‘, $err_line = 0){ ???// $log = [ ???// ????‘[‘.date(‘Y-m-d h-i-s‘).‘]‘, ???// ????‘|‘, ???// ????$err_no, ???// ????‘|‘, ???// ????$err_msg, ???// ????‘|‘, ???// ????$err_file, ???// ????‘|‘, ???// ????$err_line ???// ]; ??var_dump($err_msg.‘ in ‘.$err_line); ???//echo implode(‘ ‘,$log)."<br>";}/** * 捕捉致命错误 * @return string */function fatalErrorHandler() { ???$e = error_get_last(); ???switch ($e[‘type‘]) { ???????case 1: ???????????errorHandler($e[‘type‘], $e[‘message‘], $e[‘file‘], $e[‘line‘]); ???????????break; ???}}class DemoClass_1{ ???public function index() ???{ ???????//这里发生一个警告错误,出发errorHandler ???????$ee=[‘1‘=>2]; ???????echo $ee; ???}}$demo_1 = new DemoClass_1();//这里发生一个警告错误,被errorHandler 捕获$demo_1->index();//发生致命错误,脚本停止运行触发 fatalErrorHandler// $demo_2 = new DemoClass_2();// $demo_2->index();
php异常处理笔记
原文地址:https://www.cnblogs.com/qqlong/p/8991561.html