以正确的方式处理异常


Exception handling the right way

我有一个很简单的问题,我刚刚读了一些关于PHP中错误和异常处理的文章,但我还有一些问题没有回答。

1)以哪种方式创建自定义Exception类(扩展PHP的默认Exception)比较好?在哪些情况下,我应该进行自定义例外处理?

2)我读到异常必须用catch/catch块捕获,但我经常在没有任何try/catch块的代码中看到抛出的异常。他们是否使用set_exception_handler()函数?我应该如何正确使用这个函数?

3)要在抛出异常时允许自定义行为(例如,在数据库中记录所有异常),我应该使用set_exception_handler()还是其他方法?

谢谢你花时间阅读我的问题,祝你今天愉快!

  1. 如果您需要比内置异常做得更多的异常,那么扩展它们将是一种方法。没有什么比这更重要的了。

  2. 他们不必被抓住。它们应该在某个时候被捕获(参见3.),但如果你正在编写某种库或模块,那么你可以抛出异常,让代码的用户来捕获它。

  3. 您可以将整个应用程序封装在try-catch块中,然后在那里捕获任何异常,然后对它们执行需要执行的操作(例如,将它们保存到日志文件或数据库中)。

我个人会避免使用set_exception_handler(使用3。在我看来,这将是更好的),但在某些情况下,这可能是一个好的,甚至是唯一的解决方案。