这两种方法的优缺点是什么。有一种正确的方法(tm)吗?
最佳答案
如果您想为整个应用程序使用异常而不是错误,您可以使用 ErrorException 来实现和自定义错误处理程序(请参阅 ErrorException 页面以获取示例错误处理程序)。这种方法的唯一缺点是非 fatal error 仍然会抛出异常,除非被捕获,否则这些异常总是致命的。基本上,即使是 E_NOTICE
也会停止您的整个应用程序,如果您的 error_reporting设置不会抑制它们。
在我看来,使用 ErrorException 有几个好处:
- 使用set_exception_handler,自定义异常处理程序可以让您显示漂亮的消息,即使是错误消息。 .
- 它不会以任何方式破坏现有代码... trigger_error和其他错误功能仍将正常工作。
- 很难忽略会触发
E_NOTICE
和E_WARNING
的愚蠢编码错误。 您可以使用
try
/catch
来包装可能产生 PHP 错误(不仅仅是异常)的代码,这是避免使用@
错误抑制技巧:try { $foo = $_GET['foo']; } catch (ErrorException $e) { $foo = NULL; }
如果您想在发生任何 Uncaught Error 时向用户显示友好消息,则可以将整个脚本包装在一个
try
/catch
block 中。 (小心执行此操作,因为只会记录 Uncaught Error 和异常。)
关于php - 在 PHP5 中,我应该使用 Exceptions 还是 trigger_error/set_error_handler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60607/