ruby - Ruby 中未处理的异常

标签 ruby exception unhandled-exception

我是第一次从事 ruby​​ 项目。除了我希望能够注册一个未处理的异常处理程序之外,我已经得到了我需要的一切,这样我就可以在发生崩溃时触发一些东西,而这不是由救援处理的,但我看不出这是否可能。

我已经完成了很多其他语言,比如在 Python 中我已经完成了以下内容:

sys.excepthook = MyClass._unhandledCrashHandler

我在 Ruby 中找不到任何等效项来执行此操作。这可能吗?

应该提到,我正在编写一个 Ruby 库,所以我的想法是当主 ruby​​ 应用程序初始化我的库时,库设置已处理的异常处理程序,然后如果主应用程序崩溃,库就会崩溃。这是我在 python 和许多其他语言中所做的,没有问题,但在 Ruby 中看不到这样做的任何方式。

最佳答案

Ruby 没有通用处理程序,而是您包装可能产生异常的代码。例如:

begin
  # ... Do stuff
rescue => e
  $stderr.puts("[%s] %s" % [ e.class, e ])
  $stderr.puts(e.backtrace.join("\n"))
end

拯救所有标准异常并显示一些诊断输出的地方。您可以在 rescue block 中做任何您想做的事情。任何未捕获的异常都会自动冒泡到您的顶层。

这必须是您的 Ruby 应用程序的顶级代码。

与您在 Ruby 中谈论的内容最接近的是您可以定义的 at_exit 处理程序,但它在每个退出场景中运行,而不仅仅是未捕获的异常。

关于ruby - Ruby 中未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124898/

相关文章:

c# - 嵌入式服务器应用程序在退出后停止工作

ruby - 在 irb 中重新加载 ruby​​gems?

ruby - Elasticsearch - 无法使用建议字段进行搜索 ("is not a completion suggest field")

c++ - 无法抛出 CException 派生异常?

c# - 具有函数作用域的变量

wpf - 捕获线程、任务、计时器、ThreadPool 线程和后台工作线程上引发的 UnhandledExceptions

ruby-on-rails - 将 JSON 字符串转换为哈希

ruby - 使用 Ruby 将不等数量的数组输出导出到文件

c++ - 如果你不应该在析构函数中抛出异常,你如何处理其中的错误?

json - 未处理的异常 : type '(dynamic) => Welcome' is not a subtype of type '(String, dynamic) => MapEntry<dynamic, dynamic>' of 'transform'