我想知道将所有PHP错误全局转换为异常是否被视为不良做法。将使用以下内容:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
return false;
}
我认为假设您可以开始在通常会抛出错误的某些代码片段周围使用“try / catch”。
如果不是好/坏的情况,那么这种做法会产生什么样的问题呢?
答案 0 :(得分:8)
不幸的是,这不会对致命/解析/等起作用。错误...
不记得确切,但我已经尝试过这种情况,并且在某些情况下得到了一条消息,例如“不能在没有解决方法的情况下抛出异常......”但是我不记得获得此结果的条件。但现在我用这种方式完全满意。
答案 1 :(得分:2)
对真正无法控制的事物使用例外。
不可强>
try {
if (fopen('file.txt', 'w') === false) {
throw new Exception('File could not be opened for write access.');
}
} catch (Exception $e) {
echo $e->getMessage();
}
<强>为:强>
try {
if (strlen($_POST['username']) < 5) {
throw new Exception('Username too short');
}
} catch (Exception $e) {
echo $e->getMessage();
}
第一种方法是好的,因为它发生在用户或应用程序无法控制的东西时。它无法打开文件,因为?可能有很多原因。
第二种方法是当你应该使用trigger_error时,尝试使用try / catch。第二种方式是用户不知道用户名验证的规则。
简而言之,当您无法控制测试内容时会使用异常。记住异常有更多的开销,然后是trigger_error:)
答案 2 :(得分:1)
我在尝试管理所有类型的错误类型时投入了大量的工作,因为每个库/函数都以不同的方式处理错误。