我不知道在php中处理错误,无论是运行时还是编译时。我想管理所有类型的错误。
注意,警告,分析错误,致命错误
当出现这些类型的错误时,我希望我的程序在页面上抛出自定义写入的消息。目前我正在使用try{} catch{}
,set_error_handler
:
// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");
简而言之:我正在寻找正确的方法来处理错误,如果我输入错误的变量声明,如d
而不是$d
,或者如果我忘记了一行中的分号,或者如果我收到MySQL错误。
答案 0 :(得分:2)
您需要设置两者,错误处理程序和异常处理程序。如果同时抛出错误和未捕获的异常,您将看到两条消息都显示出来:
<?php
function exception_handler($exception) {
echo "Custom exception message: " . $exception->getMessage() . "\n";
}
function error_handler($errno, $errstr, $errfile, $errline) {
echo "Custom error message: " . $errstr . "\n";
}
set_exception_handler('exception_handler');
set_error_handler('error_handler');
//This exception will *not* cause exception_handler() to execute -
//we have addressed this exception with catch.
try{
throw new Exception('I will be caught!');
} catch (Exception $e) {
echo "Caught an exception\n";
}
//Unmanged errors
trigger_error("I'm an error!");
throw new Exception("I'm an uncaught exception!");
?>
输出:
抓住了异常
自定义错误消息:我发生了错误!
自定义异常消息:我是未捕获的异常!
您可以(并且应该)仍然使用try{} ... catch(){}
来解决出现的错误,但是在脚本执行完毕后,异常处理程序将无法处理这些错误。
有关exception handlers的更多信息。
有关error handlers的更多信息。
答案 1 :(得分:0)
您想要调试错误而不是抑制它们。编写代码是25%编码和75%调试(可论证)。你给出抑制错误的原因只是从一开始就编写错误的代码。