是否應該java.sql.Statement.execute拋出java.io.EOFException?只有在允許僅允許SQLException時才能引發EOFException?
在http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#execute%28java.lang.String,%20int%29據說它可能只會拋出java.sql.SQLException。不過,我得到這個異常消息記錄:
** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1394) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278) at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1224) at com.mysql.jdbc.Connection.execSQL(Connection.java:2244) at com.mysql.jdbc.Connection.execSQL(Connection.java:2192) at com.mysql.jdbc.Statement.execute(Statement.java:906) at com.mysql.jdbc.Statement.execute(Statement.java:947) at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100) at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57) at $java.sql.Statement$$EnhancerByCGLIB$$4e952ca0.execute() at handler.do_insert(handler.java:734)
論「handler.java」 733行有「執行」的呼叫,並在734那裏是一個的getGeneratedKeys電話(也可能拋出的SQLException只) 。
什麼可能發生在你身上的是連接關閉你。這不屬於mySQL的範圍,而是套接字問題。 – ATaylor
您的代碼是否正在捕獲異常,因爲它不僅僅是來自捕獲異常的堆棧中較深的代碼的一些錯誤輸出? – Omaha
對不起,代碼實際上確實發現了異常。我感到困惑;可能是因爲堆棧跟蹤(它在我的問題中被截斷)一直到主程序,所以我留下了一個印象,即異常沒有被捕獲。 –