Ruby 中的多个水豚异常

Multiple Capybara exceptions in Ruby

我有以下两个救援语句。我的测试数据包含应创建异常报告条目并为每种类型的异常执行救援操作的场景。

两个异常都会被记录下来,程序也会对这两个异常进行补救,但是,只记录第一个错误类型。

    rescue Capybara::ElementNotFound
      $logfile.puts "#{$date_now}: Missing details for Row #{$row+1}"
      puts "Foo Error for Row #{$row+1}\n"
      return
   rescue Capybara::Ambiguous
     $logfile.puts "#{$date_now}: Duplicated details for Row #{$row+1}"
     puts "Bar Error for Row #{$row+1}\n"
     return
   else
   @court = first('li.offence-court > p')
   end

我得到:

Foo Error for Row 3
Foo Error for Row 4

如果调换救援语句的顺序,我会收到 Bar 错误消息。如何获得针对每种异常类型显示的正确错误消息?

提前致谢。

Capybara::Ambiguous is derived from Capybara::ElementNotFound,所以Capybara::Ambiguous需要先来。

rescue Capybara::Ambiguous
  ...
rescue Capybara::ElementNotFound
  ...

如果按照这个顺序它为两个错误打印出相同的内容,那么它们实际上是同一类型的错误