【问题标题】:Rescue Exception with messages带有消息的救援异常
【发布时间】:2012-10-06 07:04:10
【问题描述】:

我收到异常 Thrift::TransportException (end of file reached),我想用消息(“到达文件结尾”)来拯救它。

现在可以了

begin
  #...
rescue Thrift::TransportException => e
  raise e unless "end of file reached" == e.message
  # do whatever if it is not end of file reached.
end

有什么方法可以做到这一点吗?

【问题讨论】:

    标签: ruby exception error-handling


    【解决方案1】:

    如果可以避免,请不要依赖消息的逻辑 - 消息只是文本,Thrift 的开发人员可以在任何给定时间点随意更改它们,从而破坏您的应用程序。

    Thrift 中的TransportException 有一个type,这是您可以看到here 的常量之一。与您相关的是END_OF_FILE

    至于代码中的实现,没有比在rescue块中检查异常属性更好的方法了,所以:

    begin
      #...
    rescue Thrift::TransportException => e
      raise e unless e.type == Thrift::TransportException::END_OF_FILE
      # do whatever if it is not end of file reached.
    end
    

    【讨论】:

      【解决方案2】:

      您不需要在rescue 块中使用raise,我建议您将实例变量显示在您想要的任何地方。另外,1==a 非常丑陋,就像blue is a sky

      begin
        #...
      rescue Thrift::TransportException => e
        @error = e.message if e.message == "end of file reached"
        # do whatever if it is not end of file reached.
      end
      

      【讨论】:

      • 据我了解,如果不符合特定标准,Sayuj 想要(重新)提出异常......
      • 是的。我想重新提出,除非 end_of_file。
      猜你喜欢
      • 2021-10-24
      • 2014-12-31
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2013-04-18
      相关资源
      最近更新 更多