日期:2014-05-20  浏览次数:20758 次

为什么发生异常后程序终止运行
Java code

try {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    Date fileDate = sdf.parse("20080528");
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}



Java code

    public int[] executeMUpDateBatch(String sKind){
        int[] result = null;
        String TableName = getConfig(sKind);
        if(upDates==null)
            return result;
        try {
            Connection conn = DATABASE.connPool.getConnection();
            PreparedStatement ps = conn.prepareStatement(upMSql);
            for(int i=0;i<upDates.size();i++){
                ps.setString(1, upDates.get(i).get(0));
                ps.setString(2, upDates.get(i).get(1));
                ps.setString(3, upDates.get(i).get(2));
                ps.setString(4, upDates.get(i).get(3));
                ps.setString(5, upDates.get(i).get(4));
                ps.setString(6, upDates.get(i).get(5));
                ps.setString(7, upDates.get(i).get(6));
                ps.setString(8, upDates.get(i).get(7));
                ps.setString(9, upDates.get(i).get(8));
                ps.setString(10, upDates.get(i).get(9));
                ps.addBatch();
//                for(int j=1;j<upDates.get(i).size();j++){
//                    ps.setString(j, upDates.get(i).get(j-1));
//                }
            }
            result = ps.executeBatch();
            DATABASE.connPool.returnConnection(conn);
            return result;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }



为什么我的程序在抛出以上两种异常后终止,如果我希望它继续运行该怎么处理。

------解决方案--------------------
都到程序末尾了,下面没有代码怎么执行?
------解决方案--------------------
加个finally,里面写你要继续执行的代码,就可以了
------解决方案--------------------
try {
// ...可能抛出异常的部分
} catch(Exception e) {
// ...处理异常
}

// ...异常处理完了,继续运行


------解决方案--------------------
异常抛出后,就不能返回原来的位置了
你还想处理什么就在处理异常的后面处理吧
------解决方案--------------------
有个办法,你用循环把try catch块包围起来,然后catch中不要执行e.printStackTrace();
,就一个空体就OK
------解决方案--------------------
抛出异常后要返回原来的位置也是可以的。把try catch放到一个循环里。
boolean condition = true;
while(condition) {
try {
...
condition = false; //如果没有异常就跳出循环。
}
catch(Exception e) {
e.printStackTrace();
} //有异常就回到原点继续。
}
------解决方案--------------------
去看think in java吧
------解决方案--------------------
这个方法比较多
可以在捕获异常的同时调用新的方法
可以用finally类继续调用其他方法
可以捕获到异常不进行处理继续执行其他代码。

------解决方案--------------------
我就不明白了,为什么遇到问题了都让人家去看书呢! 有些是要去看书,但是有些问题是看完书后不理解的才拿出来问问!你知道就告诉人家嘛,多打几个字助人为乐呀,况且你也不是什么都会!
------解决方案--------------------
探讨
我就不明白了,为什么遇到问题了都让人家去看书呢! 有些是要去看书,但是有些问题是看完书后不理解的才拿出来问问!你知道就告诉人家嘛,多打几个字助人为乐呀,况且你也不是什么都会!