1

java.sql.Statement.executeがjava.io.EOFExceptionをスローすることはおそらく可能ですか?

http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#execute%28java.lang.String,%20int%29では、java.sqlのみをスローする可能性があると言われています.SQLException。ただし、次の例外メッセージがログに記録されました。

**ネストされた例外を開始します**

java.io.EOFException

スタックトレース:

java.io.EOFException
        com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1394)で
        com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538)で
        com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929)で
        com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167)で
        com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278)で
        com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1224)で
        com.mysql.jdbc.Connection.execSQL(Connection.java:2244)で
        com.mysql.jdbc.Connection.execSQL(Connection.java:2192)で
        com.mysql.jdbc.Statement.execute(Statement.java:906)で
        com.mysql.jdbc.Statement.execute(Statement.java:947)で
        sun.reflect.GeneratedMethodAccessor8.invoke(不明なソース)で
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)で
        java.lang.reflect.Method.invoke(Method.java:597)で
        org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)で
        org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)で
        $ java.sql.Statement $$ EnhancerByCGLIB $$ 4e952ca0.execute()で
        handler.do_insert(handler.java:734)で

「handler.java」の733行目には「execute」呼び出しがあり、734行目にはgetGeneratedKeysへの呼び出しがあります(SQLExceptionのみをスローする場合もあります)。

4

2 に答える 2

4

「BEGINNESTEDEXCEPTION」を見ると、EOFExceptionがSQLException内にネストされていると思います-これは事実でしょうか?

メソッドはSQLExceptionのみをスローできますが、SQLException例外が別の例外(またはエラー)をラップする可能性があります

于 2012-12-13T16:25:58.317 に答える
2

単語を探します** BEGIN NESTED EXCEPTION **。この例外は によってスローされませんexecute()。ネストされた例外です。これは、 の作成時に が原因として渡されたことを意味しSQLExceptionます。このようなもの:

try {

    ...

} catch (EOFException e) {
    throw new SQLException(e);
}
于 2012-12-13T16:28:51.223 に答える