PHP中错误处理机制主要是通过error_reporting和set_error_handler两个函数实现的。以下是处理PHP错误的完整攻略:
错误级别
PHP错误分为不同级别,每个级别对应一个数字。在PHP中提供了 error_reporting 函数来设置需要报告哪些错误级别的错误信息。
以下是常见的错误级别:
- E_ERROR: 致命错误,脚本无法运行
- E_WARNING: 脚本运行时出现了问题,但脚本仍然可以继续运行
- E_NOTICE: 在脚本执行期间发生了一些不寻常的事件,但不是严重的错误
- E_PARSE: 语法错误,脚本终止运行
- E_DEPRECATED: 不推荐使用的代码警告
- E_STRICT: 强制标准问题,PHP版本不兼容等信息
- E_ALL: 报告所有错误,包括警告和需要注意的通知
错误处理函数
PHP中提供了set_error_handler函数来指定处理错误信息的函数。该函数有两个参数,第一个是指定函数名,第二个是指定错误级别。当脚本发生错误并且错误级别在指定的范围内时,自动调用该函数处理错误。
以下是示例代码:
function custom_error_handler($errno, $errstr, $errfile, $errline) {
echo "<b>Custom error:</b> [$errno] $errstr <br/>";
echo " Error on line $errline in $errfile<br/>";
}
set_error_handler("custom_error_handler", E_USER_WARNING);
echo($test);
在上面的代码中,我们定义了一个 custom_error_handler 函数,来处理 E_USER_WARNING 错误级别的错误。当代码运行到 echo($test) 时,由于 $test 未定义,将引发警告错误,然后自动调用 custom_error_handler 函数处理错误。
抛出异常
PHP中还提供了throw和try-catch语句来处理异常。
以下是示例代码:
class customException extends Exception {
public function errorMessage() {
return "Error on line ".$this->getLine()." in ".$this->getFile().": <b>".$this->getMessage()."</b> is not a valid email address";
}
}
$email = "someone@example...com";
try {
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
throw new customException($email);
}
}
catch(customException $e) {
echo $e->errorMessage();
}
在上面的代码中,我们定义了一个 customException 类,当filter_var函数无法验证邮箱时,会抛出此异常,并在 catch 块中捕获并处理它。
以上就是处理PHP错误的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP 错误处理机制 - Python技术站