编程语言

img java2000_net

入门:请输出你在catch里面捕获的异常

发表于2008/10/1 14:24:00  2257人阅读

今天遇到了2个人问我他们的程序运行不对,却找不到问题,说代码都对啊?
我问,有什么异常吗?

回答:没有异常啊?

我问:你知道怎么看异常吗?

回答:我的是个小的数据库程序,我直接在Eclipse里面运行的,没发现有啥错误输出啊?

我问:给我你的代码看看

  请大家看看发过来的代码,我只贴关键部分

 
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.Statement;
  5. class T {
  6.   public static void main(String args[]) {
  7.     try {
  8.       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  9.       Connection con = DriverManager.getConnection("jdbcdbc:info");
  10.       Statement sql = con.createStatement();
  11.       String condition = "select * from info";
  12.       ResultSet rs = sql.executeQuery(condition);
  13.       rs.last();
  14.       int rowNumber = rs.getRow();
  15.       while (rs.next()) {
  16.         System.out.println(rs.getString("name"));
  17.       }
  18.       con.close();
  19.     } catch (Exception e1) { //######## 我最郁闷的是这里,其它的代码大家可以不用看
  20.     }
  21.   }
  22. }
具体的代码大家无须细看,直接看我最郁闷的部分就行了。

我发现他们好像一个老师教的,都是把 catch部分啥也不写,就好象他们的程序从来不会出错。我对他们看得书,教他们这么做的老师表示强烈的愤怒。

改成如下的代码,增加了错误输出
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.Statement;
  5. class T {
  6.   public static void main(String args[]) {
  7.     try {
  8.       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  9.       Connection con = DriverManager.getConnection("jdbcdbc:info");
  10.       Statement sql = con.createStatement();
  11.       String condition = "select * from info";
  12.       ResultSet rs = sql.executeQuery(condition);
  13.       rs.last();
  14.       int rowNumber = rs.getRow();
  15.       while (rs.next()) {
  16.         System.out.println(rs.getString("name"));
  17.       }
  18.       con.close();
  19.     } catch (Exception e1) {
  20.       e1.printStackTrace(); //####### 增加错误输出
  21.     }
  22.   }
  23. }
结果抛出了异常
  1. java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY
  2.     at sun.jdbc.odbc.JdbcOdbcResultSet.last(Unknown Source)
是Statement类型错了,修改一下就行了,改成可移动的结果集。
  1. sql = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);


忠告初学者,这些小地方一定要注意,同样的代码,有的人写了,有的人省略了,为什么?如果你不确认,那就写上吧。
一点你的程序出了问题,这个可是你唯一的参考啊。

就算是有经验的朋友,我同样建议你把一些异常输出出来。当然你可以用更好的方式,比如日志之类的。

为了更好地调试你的程序,请输出你在catch里面捕获的异常吧!!!


阅读全文
0 0

相关文章推荐

img
取 消
img