<?php // 设置顶层异常处理器 set_exception_handler('exceptionHandler'); function exceptionHandler($e) { echo $e -> getMessage(); } // register_shutdown_function可捕获 FATAL ERROR 级别的错误 register_shutdown_function('fatalHandler'); function fatalHandler() { $error = error_get_last(); $errno = $error["type"]; $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; $str= "errno:" . $errno . "-errstr:" . $errstr . "-errfile:" . $errfile . "-errline:" . $errline; echo $str; } // set_error_handler只能捕获 NOTICE/WARNING级别的错误 set_error_handler('errorHandler'); function errorHandler($errno,$errstr,$errfile,$errline) { $str= "errno:" . $errno . "-errstr:" . $errstr . "-errfile:" . $errfile . "-errline:" . $errline; echo $str; } // 设置自动装载函数 spl_autoload_register('splAutoloadRegister'); function splAutoloadRegister($name) { print '[['. $name .']] can not autoload'; echo "\n"; } function checkNum($number) { if($number>1) { // 异常构造函数 // Value must be 1 or below:异常描述 // 400:异常错误码 // new Exception('parentOne', 401):该异常的上一个异常 throw new Exception("Value must be 1 or below", 400, new Exception('parentOne', 401)); } return true; } try { checkNum(2); } catch (\Exception $e) { // 获取异常消息内容 echo $e -> getMessage(); // 返回异常链中的前一个异常(返回的是一个Throwable接口类, Exception是Throwable的一个子类) // 可使用$e -> getPrevious() -> getCode()获取上一个异常的信息 echo $e -> getPrevious(); // 获取异常错误码 echo $e -> getCode(); // 建立异常时的程序文件名称 echo $e -> getFile(); // 获取建立的异常所在文件中的行号 echo $e -> getLine(); // 获取异常追踪信息 print_r($e -> getTrace()); // 获取字符串类型的异常追踪信息 echo $e -> getTraceAsString(); // 将异常对象转换为字符串 echo $e -> __toString(); }