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スリフトには、があります。これは、ここでtype確認できる定数の1つです。あなたに関連するものはです。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 に答える