maven+Springboot——mapper層的sql執行失敗,在service層裏不能捕獲到

sql語句本身出現錯誤,即bad sql
在serviceimpl中,

public void updateOrder (Integer id, String d, boolean isS)throws Exception {
System.out.println("here**************");

ParamMap param = new ParamMap();
param.seti(id);
param.setTd(d);
String id =null;
try{
id = mapper.selectID(param);
}catch(Exception e){
System.out.println("sql語句執行錯誤,錯誤信息 爲:");
e.printStackTrace();
}
}

這樣的話即使mapper中的sql語句出錯,tryCatch也無法捕獲到,依然會報錯,也不會到catch塊中執行,同時瀏覽器中也會報錯。
而如果在service層中拋出這個異常,向上拋到controller中,在controller中進行trycatch捕獲異常,此時可以打印出錯誤信息,瀏覽器也不會報錯。
controller:

try{
            order_service.updateOrder(88,"uni076",true);
        }catch(Exception e){
            System.out.println("sql語句執行錯誤,錯誤信息 爲:");
            e.printStackTrace();
        }

serviceimpl:

void updateOrder(Integer id, String d, boolean isS)throws Exception{}

注意:因爲是針對這個方法拋出的異常,如果這之中有很多的sql語句都出現了錯誤,那麼他只能拋出異常後得到第一個sql語句的異常信息
因爲在sql異常後的代碼都不會執行了,而在這個serviceimpl的一個方法裏,可能涉及到很多的mapper方法,throws Exception 是寫在這個方法上的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章