<?php header("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();