1

我有一个 Rails 3 应用程序,它使用 exception_notification gem 发送有关异常的电子邮件。

我还想在发生异常时向用户显示特定的错误消息,但是通过捕获通用异常,因为我不确定可能发生的所有异常。我在想这样做的方法是从异常中拯救出来,然后引发一个自定义异常。这样我仍然会收到有关异常的电子邮件,并且用户可以看到自定义异常的错误页面。

这听起来像 Rails 3 的做事方式吗?

非常感谢。

4

1 回答 1

4

我想不是。

正如瑞恩戴维斯所说

不要拯救异常。曾经。否则我会刺伤你。

有关该声明的更多信息在这里

Rails 3.2 在两个中间件中进行异常处理:

  • ActionDispatch::ShowExceptions
  • ActionDispatch::DebugExceptions

你可以通过运行来检查那个

$ rake middleware 

ActionDispatch::ShowExceptions []

在生产中用于呈现异常页面。

ActionDispatch::DebugExceptions []

在开发环境中用于在发生异常时呈现详细的堆栈跟踪。停止中间件调用链并呈现堆栈跟踪,如果action_dispatch.show_detailed_exceptions更准确的话。


所以用这个中间件做一些正常的事情的最简单的方法是猴子修补 的call方法ActionDispatch::DebugExceptions,做你需要做的所有事情,然后调用原始方法。

但是,更好的方法是在这两者之间包含您自己的中间件。在其中,您会将调用包装在救援块中并进行自定义处理。

我是Airbrake的维护者,这正是我们现在正在做的事情

您可能还想检查Errbit,这是自托管的替代方案。

于 2013-02-06T01:08:13.030 回答