【问题标题】:Multiple Capybara exceptions in RubyRuby 中的多个 Capybara 异常
【发布时间】:2016-03-16 18:26:23
【问题描述】:

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

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

    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 错误消息。如何获得针对每种异常类型显示的正确错误消息?

提前致谢。

【问题讨论】:

    标签: ruby error-handling capybara


    【解决方案1】:

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

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

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

    【讨论】:

    • Tom,对异常的处理是否会因您使用的循环类型而异?
    • 在我的脑海中,我不这么认为。
    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多