ruby - 如何捕获 ruby​​ 中的所有异常?

标签 ruby exception exception-handling

我们如何捕获或/和处理 ruby​​ 中所有未处理的异常?

例如,这样做的动机可能是将某种异常记录到不同的文件或发送电子邮件给系统管理。

在 Java 中我们会做

Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler ex);

在 Node.js 中

process.on('uncaughtException', function(error) {
   /*code*/
});

在 PHP 中

register_shutdown_function('errorHandler');

function errorHandler() { 
    $error = error_get_last();
    /*code*/    
}

我们如何使用 ruby​​ 做到这一点?

最佳答案

高级解决方案使用exception_handler gem

如果您只想捕获所有异常并将示例放入您的日志中,您可以将以下代码添加到 ApplicationController:

begin
  # do something dodgy
rescue ActiveRecord::RecordNotFound
  # handle not found error
rescue ActiveRecord::ActiveRecordError
  # handle other ActiveRecord errors
rescue # StandardError
  # handle most other errors
rescue Exception
  # handle everything else
end

您可以在此 thread 中找到更多详细信息.

关于ruby - 如何捕获 ruby​​ 中的所有异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42029690/

相关文章:

c# - 如何在 .NET 中抛出的异常的 StackTrace 中获取行号以显示

ruby - 对文件进行符号链接(symbolic link)后,如何在 Ruby 中获取原始文件的路径?

ruby-on-rails - 在两个日期时间之间迭代,步长为一小时

C-修复递归中的堆栈溢出

Java 异常作为已检查的异常但不需要在 trycatch 中抛出

actionscript-3 - 在 ActionScript 3中,当UncaughtErrorEvent发生时停止我的Flash应用程序是否安全?

java - 捕获应用程序停止异常时应该使用 System.exit(1) 吗?

exception-handling - 如何在 python 中捕获 Joblib/并行异常?

ruby - sinatra 中的嵌套布局

ruby - 在 Ruby 中阻止评论