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


Can I redefine the way PHP displays uncaught exceptions?

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中的一个函数,你可以将其设置为备份来捕获所有未捕获的异常。也许我可以使用该功能来格式化我自己的消息并终止该过程。

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

您正在寻找set_exception_handler() .

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

相关文章: