ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
## 自定义错误处理 ### set_error_handler 函数 使用该函数可以用自己定义的方式来处理运行中的错误。 例如:在应用程序中严重错误发生时,或者在特定条件下触发了一个错误。 mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] ) | 参数 | 描述 | | --- | ---- | | error_handler | 必需,规定发生错误时运行的函数。| |error_types | 可选。规定在哪个错误报告级别会显示用户定义的错误。| 如果使用了该函数,error_types 里指定的错误类型都会绕过标准的 PHP 错误处理函数,除非回调函数返回了 FALSE。 如果必要,用户定义的错误处理程序必须终止脚本。 以下级别的错误不能由用户定义的函数来处理: `E_ERROR`,`E_PARSE`,`E_CORE_ERROR`,`E_CORE_WARNING`,`E_COMPILE_ERROR`,`E_COMPILE_WARNING`, 和在调用 set_error_handler() 函数所在文件中产生的大多数 `E_STRICT`。 ``` <?php function my_error($err_no, $err_str, $err_file, $err_line) { echo "{$err_no}: {$err_str} in '{$err_file}' on line {$err_line} . PHP_EOL; exit(); } set_error_handler('my_error', E_ALL); foo(); // 调用一个未定义的函数, E_ERROR: 不能被自定义处理 $b = $a + 1; // 使用未定义的变量 E_WARNING: 可以被自定义处理 ?> ``` ### trigger_error 函数 用于触发一个用户级别的错误条件,它能结合内置的错误处理器所关联,或者可以使用用户定义的函数作为新的错误处理程序。 bool trigger_error ( string $error_msg [, int $error_type = E_USER_NOTICE ] ) | 参数 | 描述 | | --- | ---- | | error_msg | 错误信息,长度限制在了 1024 个字节。| |error_type | 错误类型,仅 E_USER 系列常量对其有效,默认是 E_USER_NOTICE。| ``` <?php function my_error($err_no, $err_str, $err_file, $err_line) { echo "{$err_no}: {$err_str} in '{$err_file}' on line {$err_line} . PHP_EOL; } set_error_handler('my_error', E_ALL); function sum($a, $b) { if (is_int($a) && is_int($b)) { return $a + $b; } else { trigger_error('param must be integer', E_USER_ERROR); } } sum(123, 'abc'); ?> ```