Ruby on Rails exception handling basics
我有一个Rails 3应用程序,它使用exception_notification gem发送有关异常的电子邮件。
我还想在发生异常时向用户显示特定的错误消息,但是通过捕获一般的异常,因为我不确定可能发生的所有异常。 我在想这样做的方法是从Exception中解救,然后引发一个自定义异常。 这样我仍然收到有关异常的电子邮件,用户可以看到自定义异常的错误页面。
这听起来像是Rails 3的做事方式吗?
非常感谢。
我想不是。
正如莱恩戴维斯所说
Don’t rescue Exception. EVER. Or I will stab you.
这里有关于该声明的更多信息。
Rails 3.2在两个中间件中进行异常处理:
- ActionDispatch :: ShowExceptions
- ActionDispatch :: DebugExceptions
您可以通过运行检查一个
1 | $ rake middleware |
ActionDispatch :: ShowExceptions [来源]
在生产中用于呈现异常页面。
ActionDispatch :: DebugExceptions
在发生环境中用于在发生异常时呈现详细的堆栈跟踪。如果
因此,使用此中间件执行正常操作的最简单方法是对
但是,更好的方法是在这两者之间包含您自己的中间件。在其中,您可以将调用包装在救援区内并进行自定义处理。
我是Airbrake的维护者,这正是我们现在所做的。
您可能还想检查Errbit,这是自托管的替代方案。