Java中已经被try,catch的异常再其上一层中如何继续被try,catch

来源:互联网 发布:win10平板相关软件 编辑:程序博客网 时间:2024/05/15 15:17

比如Dao层有一条 insert 语句, 在该层已经try,catch了,现在我故意将sql写错,
在Service层 try,catch时,走到try就打印出异常了,然后不会进catch,现在我想
让程序进Service层的catch该如何处理?

Service层的代码

故意将ID字段写成OD字段


 String sql = "INSERT INTO user_tbl (OD, NAME, AGE) VALUES ('1', '大头', '18')";            List<String> sqllist = new ArrayList<String>();            sqllist.add(sql);            try {                dataService.insertList(sqllist );            } catch (Exception e) {                flag = "0";      //这里代码不进catch,直接跳过,无法将flag设置成0                e.printStackTrace();            }



Dao层的代码

public boolean insertList(List<String> sqllist) {        List<Object[]> list = null;        // TODO Auto-generated method stub        if (sqllist != null && sqllist.size() > 0) {            boolean flag = false;            try {                int[] resoult = this.updateSqlDataAll(sqllist);                if(resoult!=null){                    flag = true;                }else{                    flag = false;                }            } catch (Exception e) {                flag = false;                // TODO Auto-generated catch block                e.printStackTrace();            }            return flag;        } else {            return false;        }    }





以上代码在service层出现了异常,无法运行到catch中,做如下修改:


Dao层的代码

public boolean insertList(List<String> sqllist) throws Exception{        List<Object[]> list = null;        // TODO Auto-generated method stub        if (sqllist != null && sqllist.size() > 0) {            boolean flag = false;            try {                int[] resoult = this.updateSqlDataAll(sqllist);                if(resoult!=null){                    flag = true;                }else{                    flag = false;                }            } catch (Exception e) {                flag = false;                // TODO Auto-generated catch block                e.printStackTrace();throw e; //将异常即使try,catch了也继续向上throw            }            return flag;        } else {            return false;        }    }