php异常处理笔记

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