我可以重新定义PHP显示未捕获异常的方式吗?

时间:2012-04-18 11:26:49

标签: php exception exception-handling

PHP中正常抛出和未捕获的异常将产生类似于此的输出:

Fatal error: Uncaught exception 'Exception' with message 'Insufficient permissions or something' in /home/codemonkey/foo/bar/File.php:143
Stack trace:
#0 /home/codemonkey/dev/foo/bar/SomeOtherFile.php(85): foo\bar\File::fromUpload(Array)
#1 /home/codemonkey/dev/foo/bar/OmniDataFileImport.php(35): foo\bar\OmniDataFileImport->performFileImportLogic()
#2 [internal function]: foo\bar\OmniDataFileImport->post(Object(Request), false)
#3 /home/codemonkey/dev/foo/vendor/tonic/lib/tonic.php(654): call_user_func_array(Array, Array)
#4 /home/codemonkey/dev/foo/dispatch.php(22): Resource->exec(Object(Request))
#5 {main}
  thrown in /home/codemonkey/dev/foo/broadnet/files/File.php on line 143

消息和堆栈跟踪很酷,但我真的想了解更多信息。出于这个原因,我想用更多信息扩展Exception,例如局部变量及其值。问题是PHP可能仍然会输出相同的上述信息,但会改为使用文本“Uncaught exception'MyException'”。

我可以覆盖PHP显示未捕获异常的方式吗?我记得在PHP中读到一个函数,您可以将其设置为备份以捕获所有未捕获的异常。也许我可以使用该功能来格式化我自己的消息并终止该过程。

感谢您提供有关该主题的所有有用信息

1 个答案:

答案 0 :(得分:1)

您正在寻找set_exception_handler()

但是,您无法检索局部变量等。除非您使用不适合生产系统的调试扩展,否则PHP的错误处理/调试相当差。