【发布时间】:2012-04-29 19:18:20
【问题描述】:
在 PHP 中正常抛出和未捕获的异常会产生类似这样的输出:
致命错误:在/home/codemonkey/foo/bar/File.php:143 中带有消息“权限不足或其他内容”的未捕获异常“异常” 堆栈跟踪: #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 [内部函数]: 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 {主要} 在第 143 行抛出 /home/codemonkey/dev/foo/broadnet/files/File.php消息和堆栈跟踪很酷,但我真的想要更多信息。出于这个原因,我想使用更多信息来扩展异常,例如局部变量及其值。问题是 PHP 可能仍会输出相同的上述信息,但会显示文本“未捕获的异常 'MyException'”。
我可以覆盖 PHP 显示未捕获异常的方式吗?我记得阅读过 PHP 中的一个函数,您可以将其设置为备份以捕获所有未捕获的异常。也许我可以使用该功能来格式化我自己的消息并终止进程。
感谢您提供有关该主题的所有有用信息
【问题讨论】:
-
如果不在每个
throw站点编写代码,就无法在股票 PHP 上获取局部变量;由不受您控制的代码引发的异常也将没有局部变量,并且您无法对 that 做任何事情。 -
但是我仍然可以通过反射做一些很酷的事情... :-)
标签: php exception exception-handling