带消息的Rescue Exception

Say*_*yuj 2 ruby error-handling exception

我得到了异常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
Run Code Online (Sandbox Code Playgroud)

有没有办法做这个红宝石?

Jak*_*ski 5

如果可以避免,不要依赖于消息的逻辑 - 消息只是文本,Thrift的开发人员可以在任何给定的时间点自由更改它们,打破你的应用程序.

TransportException在Thrift有一个type,这是你可以在这里看到的常数之一.与你相关的是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
Run Code Online (Sandbox Code Playgroud)