我一直在PHP的Zend框架内编写许多小型库(一堆类)用于我的应用程序。我也一直在库方法中捕获这些异常并将它们记录到文件中。
然后突然间,我遇到了一个问题:即使在我预期由于致命错误而退出的情况下,使用这些库的主要应用程序仍不会退出。这个问题的原因是下面的代码继续执行到最后 - 它本不应该这样。
似乎在库类中捕获并记录大部分错误(除非特殊情况)并不是一种好的做法。它们应该始终抛出错误?这是否正确的假设?
如果有人能为我解答这个问题,我将不胜感激。
我一直在PHP的Zend框架内编写许多小型库(一堆类)用于我的应用程序。我也一直在库方法中捕获这些异常并将它们记录到文件中。
然后突然间,我遇到了一个问题:即使在我预期由于致命错误而退出的情况下,使用这些库的主要应用程序仍不会退出。这个问题的原因是下面的代码继续执行到最后 - 它本不应该这样。
似乎在库类中捕获并记录大部分错误(除非特殊情况)并不是一种好的做法。它们应该始终抛出错误?这是否正确的假设?
如果有人能为我解答这个问题,我将不胜感激。
捕获和处理所有异常是一个好主意。如果您不确定是否可以安全地忽略异常(例如,由您自己的代码引发的异常),请显示错误页面。不要简单地重新抛出它,因为向用户呈现空白页面、Web服务器的默认错误页面甚至PHP错误消息都是最糟糕的情况。
@throws
标记。一些语言(如Java)会自动执行此操作,因为您必须在方法/类前缀中使用“throws”子句,就像您使用“extends”子句扩展类一样。 - Christian这取决于网站是否处于生产状态或已发布产品。最后你想做的事情就是向用户显示堆栈跟踪信息。如果你预期会出现可能导致严重问题的错误,那么就要捕获并处理它。