如何找出要在 Ruby 中捕获的异常

How to figure out what exception to catch in Ruby

我得到了一些代码,这些代码不断从 jRuby 库中引发异常。该代码仅处理某些异常,但它遗漏了我不断得到的异常。

有没有一种方法可以在不深入研究库代码的情况下找出如何捕获该特定异常?

当您的异常导致程序退出时,您应该显示引发的异常类型。

例如,我在以下示例中将 IRB 报告的异常类型加粗了:

irb(main):001:0> def do_it(a,b); end; do_it(3,4,5)
ArgumentError: wrong number of arguments (given 3, expected 2)
  from (irb):1:in `do_it'
  from (irb):1
  from /Users/meagar/.rbenv/versions/2.3.1/bin/irb:11:in `'

基于此,我知道我需要处理 ArgumentError

否则,您可以捕获 all 异常,在异常处理程序中使用调试器检查捕获的异常并确定其类型,然后将 catch-all 替换为正确的异常类型。