我有一个很简单的问题,我刚刚读了一些关于PHP中错误和异常处理的文章,但我还有一些问题没有回答。
1)以哪种方式创建自定义Exception类(扩展PHP的默认Exception)比较好?在哪些情况下,我应该进行自定义例外处理?
2)我读到异常必须用catch/catch块捕获,但我经常在没有任何try/catch块的代码中看到抛出的异常。他们是否使用set_exception_handler()
函数?我应该如何正确使用这个函数?
3)要在抛出异常时允许自定义行为(例如,在数据库中记录所有异常),我应该使用set_exception_handler()
还是其他方法?
谢谢你花时间阅读我的问题,祝你今天愉快!
-
如果您需要比内置异常做得更多的异常,那么扩展它们将是一种方法。没有什么比这更重要的了。
-
他们不必被抓住。它们应该在某个时候被捕获(参见3.),但如果你正在编写某种库或模块,那么你可以抛出异常,让代码的用户来捕获它。
-
您可以将整个应用程序封装在
try-catch
块中,然后在那里捕获任何异常,然后对它们执行需要执行的操作(例如,将它们保存到日志文件或数据库中)。
我个人会避免使用set_exception_handler
(使用3。在我看来,这将是更好的),但在某些情况下,这可能是一个好的,甚至是唯一的解决方案。