有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java当只允许SQLException时,如何抛出EOFEException?

这对java来说可能吗。sql。陈述执行抛出java。伊奥。EOFEException

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行有一个“execute”调用,在734行有一个对getGeneratedKeys的调用(它也可能只抛出SQLException)


共 (2) 个答案

  1. # 1 楼答案

    寻找单词** BEGIN NESTED EXCEPTION **。这个异常不是由execute()引发的,它是一个嵌套异常。这意味着在创建SQLException时,它被作为原因传递。比如:

    try {
    
        ...
    
    } catch (EOFException e) {
        throw new SQLException(e);
    }
    
  2. # 2 楼答案

    看着“BEGIN NESTED EXCEPTION”,我觉得EOFEException嵌套在一个SQLException中——会是这种情况吗

    该方法只能抛出一个SQLException,但SQLException异常可以包装另一个异常(或错误)