我有一个相当简单的问题,我刚刚阅读了有关PHP中的错误和异常处理的文章,但我仍然有一些问题未被发现。
1)以哪种方式制作自定义异常类(扩展PHP的默认异常)?在哪些情况下我应该制作自定义例外?
2)我读到必须使用catch / try块捕获异常,但我经常看到没有任何try / catch块的代码中抛出的异常。他们使用set_exception_handler()
功能吗?我应该如何正确使用此功能?
3)要在抛出异常时允许自定义行为(例如,记录数据库中的所有异常),我应该使用set_exception_handler()
还是别的?
感谢您抽出宝贵时间阅读我的问题并度过愉快的一天!
答案 0 :(得分:1)
如果您需要的异常不仅仅是内置异常,那么扩展它们就是最佳选择。没有比这更多的东西了。
他们不得被抓住。它们应该在某些时候被捕获(参见3.)但是如果你正在编写某种类型的库或模块,那么你可以抛出异常并将其留给该代码的用户来捕获它
您可以将整个应用程序包装在try-catch
块中,然后在那里捕获任何异常,然后执行您需要执行的操作(例如将它们保存到日志文件或数据库中物质)。
我个人会避免使用set_exception_handler
(在我看来,使用3.会更好),但在某些情况下,它可能是一个好的,甚至是唯一的解决方案。