Ruby on rails 3 RubyonRails异常处理基础
我有一个Rails 3应用程序,它使用异常通知gem发送关于异常的电子邮件 我还希望在异常发生时向用户显示特定的错误消息,但捕获一个通用异常,因为我不确定可能发生的所有异常。我认为这样做的方法是从异常中解救出来,然后引发一个自定义异常。这样,我仍然会收到一封关于异常的电子邮件,用户可以看到自定义异常的错误页面 这听起来像Rails的3种方式吗 非常感谢。我想没有 正如Ryan Davis所说 不要拯救例外。曾经否则我会刺你 关于该声明的更多信息 Rails 3.2在两个中间件中执行异常处理:Ruby on rails 3 RubyonRails异常处理基础,ruby-on-rails-3,exception-handling,exception-notification,Ruby On Rails 3,Exception Handling,Exception Notification,我有一个Rails 3应用程序,它使用异常通知gem发送关于异常的电子邮件 我还希望在异常发生时向用户显示特定的错误消息,但捕获一个通用异常,因为我不确定可能发生的所有异常。我认为这样做的方法是从异常中解救出来,然后引发一个自定义异常。这样,我仍然会收到一封关于异常的电子邮件,用户可以看到自定义异常的错误页面 这听起来像Rails的3种方式吗 非常感谢。我想没有 正如Ryan Davis所说 不要拯救例外。曾经否则我会刺你 关于该声明的更多信息 Rails 3.2在两个中间件中执行异常处理:
- ActionDispatch::ShowExceptions
- ActionDispatch::调试异常
$ rake middleware
ActionDispatch::ShowExceptions[]
在生产中用于呈现异常页面
ActionDispatch::调试异常[]
在开发环境中用于在发生异常时呈现详细的堆栈跟踪。如果action\u dispatch.show\u detailed\u exceptions
为true,则停止中间件调用链并呈现堆栈跟踪
因此,使用该中间件进行正常操作的最简单方法是对
ActionDispatch::DebugExceptions
的call
方法进行monkeypatch,完成所有需要执行的操作,然后调用原始方法
但是,更好的方法是在这两者之间包含您自己的中间件。在其中,您可以将呼叫包装在一个rescue块中,并进行自定义处理
我是一个维护者,这正是
您可能还需要检查自托管的替代方案。我想没有
正如Ryan Davis所说
不要拯救例外。曾经否则我会刺你
关于该声明的更多信息
Rails 3.2在两个中间件中执行异常处理:
- ActionDispatch::ShowExceptions
- ActionDispatch::调试异常
$ rake middleware
ActionDispatch::ShowExceptions[]
在生产中用于呈现异常页面
ActionDispatch::调试异常[]
在开发环境中用于在发生异常时呈现详细的堆栈跟踪。如果action\u dispatch.show\u detailed\u exceptions
为true,则停止中间件调用链并呈现堆栈跟踪
因此,使用该中间件进行正常操作的最简单方法是对
ActionDispatch::DebugExceptions
的call
方法进行monkeypatch,完成所有需要执行的操作,然后调用原始方法
但是,更好的方法是在这两者之间包含您自己的中间件。在其中,您可以将呼叫包装在一个rescue块中,并进行自定义处理
我是一个维护者,这正是
您可能还想查看自托管替代方案。感谢您提供的详细答案。如果我只是捕获了StandardError,然后引发了一个自定义异常并在ApplicationController中处理它,这样可以吗?谢谢好的,如果你想在你的控制器中执行,你可以在你的控制器中使用
rescue\u from
。再次感谢。但是,如果我在控制器中捕获它,而不让它一直到达应用程序控制器,我认为异常通知gem不会知道抛出了异常。感谢您提供了非常详细的答案。如果我只是捕获了StandardError,然后引发了一个自定义异常并在ApplicationController中处理它,这样可以吗?谢谢好的,如果你想在你的控制器中执行,你可以在你的控制器中使用rescue\u from
。再次感谢。但是,如果我在控制器中捕获它,而不让它一直到达应用程序控制器,我认为异常通知gem不会知道抛出了异常。