我有以下两个救援声明。我的测试数据包含应该创建异常报告条目的场景,并为每种类型的异常执行救援操作。
两个异常都被记录,程序也为两者都挽救,但是,只记录了第一个错误类型。
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错误消息。如何针对每种类型的异常显示正确的错误消息?
提前致谢。
答案 0 :(得分:2)
Capybara::Ambiguous is derived from Capybara::ElementNotFound,所以Capybara :: Ambiguous需要先来。
rescue Capybara::Ambiguous
...
rescue Capybara::ElementNotFound
...
如果按顺序打印出两个错误的相同内容,则两者实际上都是相同类型的错误