我正在研究PHP框架,目前正在设计错误处理。根据我在SO上所读到的内容,我应该只使用异常情况,特殊情况。因此,输入错误密码时抛出异常是错误的。
当我想向用户返回服务器错误代码时,是否应该避免使用异常(例如,404 Page Not Found)?如果是这样,我应该编写自己的错误处理类吗?
答案 0 :(得分:7)
您的代码不应抛出与用户交互的异常,它应抛出异常以通知更高级别的代码,发生不可恢复的事情。
现在,根据发生的情况,您可能希望使用某个HTTP状态代码进行响应。但是在那时你没有抛出异常来触发服务器错误,你正在捕获异常并给予用户适当的响应。
如果问题是当请求的文章/博客/项目/不存在时会发生什么 - 好吧,如果负责显示信息的代码可能只是设置响应代码,那么一切手段,不要使用例外。
如果您正在使用MVC框架,并且您的各个控制器可以设置响应代码,那么请让它们。
如果最顶层的异常处理程序可以使用http响应代码更好地向用户显示错误消息,那么就让它。
答案 1 :(得分:2)
例外不是控制流机制。
答案 2 :(得分:0)
例外应该仅限于应用程序真正无法处理这种情况的那些时间。
正如你所说,抛出错误密码的例外是非常错误的。
我能提出的唯一服务器错误类型情况是,如果所需的资源(如您的sql server)不可用。
除此之外,访问被拒绝等都是您的应用程序应该具有正常处理方式的常见事件。
答案 3 :(得分:0)
我认为你在谈论两件不同的事情:
在第一种情况下,如果要通过使用面向对象的方法来解决问题,则抛出异常是正确的方法。 HTTP状态代码是HTTP协议的一部分,您的框架不应以任何方式处理它们。