比如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;
}
}