2012-04-19 13 views
1

BeanIOを使用してフラットファイルをObjectのリストに変換しています。次のコードスニペットを使用します。BeanIOの一部のレコードで例外が発生した場合は、レコードの解析を続行します

while ((MyCustomRecord obj = (MyCustomRecord) in.read()) != null) { 
     System.out.println(obj); 
} 

しかし、これは、ある種のレコードの解析中に例外が発生した場合、すぐにレコードの処理を中止するという問題があります。私はそのような例外を抑制し、次のレコードの処理を継続したいと考えています。

これを行う方法はありますか?

in.readのブロックにwhileブロックを入れて、それをtry/catchの周りに囲んでみると、どのように終了条件が検出されますか。レコードの終わりを知らせる方法はないようです。 Jitendra

答えて

2

がBeanIOリファレンスドキュメントで答えを見つけ

感謝。私は以前それを逃した。

カスタムErrorHandlerをBeanReaderに登録することでこれを行うことができます。

in.setErrorHandler(new BeanReaderErrorHandlerSupport() { 
      public void invalidRecord(InvalidRecordException ex) throws Exception { 
       System.out.println(ex.getLocalizedMessage()); 
      } 
}); 

http://beanio.org/docs/reference/index.html#StreamValidation

関連する問題