日期:2014-05-18  浏览次数:20885 次

javabean中的异常处理没有异常也会执行catch里的代码
public   int   executeUpdate(String   sql)
{
          int   rowCount=0;
          rs=null;

        try
        {  
            conn=   DriverManager.getConnection(url,user,password);
            Statement   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
              rowCount=0;
              rowCount=stmt.executeUpdate(sql);
          }
          catch(Exception   ex)
          {
System.err.println( "db,excuteUpdate: "+ex.getMessage());
System.out.print( "false: ");//输出到客户端
return   0;
          }

        return   1;
}
以上是我定义个一个javabean中的一段代码,
我在jsp文件中调用这个函数来实现sql数据库中记录的插入。
问题是:
我每次都已经成功的把记录插入到数据库的表中了,
但是这个函数的返回值经常是0,很少返回1;
这是怎么回事啊,记录已经插入数据库那不是表示没有出现异常嘛,应该return   1啊,怎么还会去执行catch里面的程序,而且,也不是每次插入成功都执行catch里的代码的。

------解决方案--------------------
信息太少了.
不过如果执行catch里的语句,那么就一定是抛异常了.你再好好找找.
如果想问问题的话,最好能多贴点信息出来.要学学问问题的艺术
------解决方案--------------------
肯定抛出异常了
------解决方案--------------------
System.err.println( "db,excuteUpdate: "+ex.getMessage());
前面加一句ex.printStackTrace();看看是不是有异常,你把异常打到err上去了,不一定看得到的
------解决方案--------------------
有异常才回执行catch
------解决方案--------------------
肯定会有异常的,连接都没有关闭!!最好写个finally
------解决方案--------------------
conn,stmt等放在try外边定义
------解决方案--------------------
另外,实在不明白的话,跟踪调试,肯定回发现问题的.
------解决方案--------------------
System.err.println( "db,excuteUpdate: "+ex.getMessage());


这句打出的信息是什么呢?

------解决方案--------------------
finally里 也要加try catch
修改成以下方式


catch(Exception ex)
{
System.err.println( "db,excuteUpdate: "+ex.getMessage());
System.out.print( "false: ");//输出到客户端
return rowCount;
}

return rowCount;
}
------解决方案--------------------
直接return rowCount;也可以
public int executeUpdate(String sql)
{
int rowCount=0;
rs=null;

try
{
conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rowCount=0;
rowCount=stmt.executeUpdate(sql);
}
catch(Exception ex)
{
System.err.println( "db,excuteUpdate: "+ex.getMessage());
System.out.print( "false: ");//输出到客户端
}

return rowCount;
}
------解决方案--------------------
System.err.println( "db,excuteUpdate: "+ex.getMessage());
建议在开发期间。将getMessage();换成ex.printStackTrace();
...................................