2

我得到异常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

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

4

2 回答 2

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
于 2012-10-16T08:29:04.037 回答
0

你不需要raise在一个rescue块中,我会建议在你想要的任何地方显示一个实例变量。另外,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
于 2012-10-16T08:29:57.300 回答