隠された例外

Java 6u7のCachedRowSet実装でacceptChangesを呼ぶと、以下のように例外が出るがよく判らない。

Caused by: javax.sql.rowset.spi.SyncProviderException: 3同期中に競合が発生します。 
    at com.sun.rowset.internal.CachedRowSetWriter.writeData(CachedRowSetWriter.java:386)
    at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:859)
    at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:918)

"3同期中に競合が発生します。" そもそも、行頭の数字は何だろう。言語のメッセージを調べてみると"3 conflicts while synchronizing"となるので、3というのは現在のRowSet中の行数だろうか。
恐らくはCachedRowSetWriter#writeData中でSQLExceptionの類が発生していると思われるが、SyncProviderExceptionによってその情報が全く見えていないのが問題だ。

http://java.sun.com/javase/ja/6/docs/ja/api/javax/sql/rowset/spi/SyncResolver.html

なるほど、SyncResolverを使うための例外なのだな。試してみよう。