/**
* 手動處理 service 層異常和資料校驗異常的示例
*@param dog
*@param errors
*@return
*/ try catch (busines***ception e)catch (exception e)
return resp;
}
缺點:只能處理 controller 層未捕獲(往外拋)的異常,對於 interceptor(***)層的異常,spring 框架層的異常,就無能為力了。
@controlleradvice
public
class
globalexceptionhandler
@controlleradvice
public
class
globalexceptionhandler
}
@target(elementtype.method)
@retention(retentionpolicy.runtime)
@documented
public @inte***ce
exceptionhandler ;
}
@controlleradvice
public
class
globalexceptionhandler
}
public
class
busines***ception
extends
runtimeexception
}
@service
public
class
dogservice
}
public
static
void
istrue(boolean expression, string error)
}
/**
* created by kinginblue on 2017/4/10.
*@controlleradvice +@exceptionhandler 實現全域性的 controller 層的異常處理
*/@controlleradvice
public
class
globalexceptionhandler
/*** 處理所有業務異常
*@param e
*@return
*/@exceptionhandler(busines***ception.class)
@responsebody
logger.error(e.getmessage(), e);
response.setfail(e.getmessage());
return response;
}}
@restcontroller
public
class
dogcontroller
}
@data
public
class
dog ", groups = )
@min(value = 1, message = "", groups = )
private long id;
@notblank(message = "", groups = )
private string name;
@min(value = 1, message = "", groups = )
private integer age;
}
說明:@notnull、@min、@notblank 這些註解的使用方法,不在本文範圍內。如果不熟悉,請查詢資料學習即可。
其他說明:
@data 註解是 **lombok** 專案的註解,可以使我們不用再在**裡手動加 getter & setter。
在 eclipse 和 intellij idea 中使用時,還需要安裝相關外掛程式,這個步驟自行google/baidu 吧!
/**
* 使用 globalexceptionhandler 全域性處理 controller 層異常的示例
*@param dog
*@return
*/ // 執行業務
dog newdog = dogservice.update(dog);
// 返回資料
resp.setdata(newdog);
return resp;
}
/**
* created by kinginblue on 2017/4/10.
*@controlleradvice +@exceptionhandler 實現全域性的 controller 層的異常處理
*/@controlleradvice
public
class
globalexceptionhandler
/*** 處理所有業務異常
*@param e
*@return
*/@exceptionhandler(busines***ception.class)
@responsebody
logger.error(e.getmessage(), e);
response.setfail(e.getmessage());
return response;
}/**
* 處理所有介面資料驗證異常
*@param e
*@return
*/@exceptionhandler(methodargumentnotvalidexception.class)
@responsebody
logger.error(e.getmessage(), e);
response.setfail(e.getbindingresult().getallerrors().get(0).getdefaultmessage());
return response;
}}
全域性異常處理 springBoot 全域性異常處理
先讚後看,月入百萬 springboot開發的web專案中,強調分層的概念,乙個完整的專案一般會劃分出controller層和service層。因此,為了 的可維護性,controller層 應該盡量簡潔,驗證一下引數,直接丟給service層處理即可 異常處理的方式無外乎兩種 在springboo...
全域性異常處理
3 丟擲異常類的使用 處理 介面無權訪問異常accessdeniedexception param e return exceptionhandler accessdeniedexception.class public responseentity handleaccessdeniedexcept...
struts 異常處理 全域性異常處理
記錄一下全域性異常處理的過程 處理主動丟擲的異常,轉向錯誤提示頁面。1 寫乙個自己的異常,繼承runtimeexception,從父類生成構造方法 package me.yndy.srtp.exception suppresswarnings serial public class errorexc...