不用實現(xiàn)異常Handler接口俗慈;
不用配置異常Handler實現(xiàn)類盒发。
開發(fā)基類谬泌,所有Action作為子類繼承就可以了脖祈。
響應(yīng)Json格式錯誤信息給調(diào)用業(yè)務(wù)方
第一步:開發(fā)自定義異常
public class JsonException extends Exception{
private int code;
private String message;
public JsonException(int code, String message) {
super();
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
第二步:開發(fā)異常處理的基類
注解:@ExceptionHandler
public class BaseController {
@ResponseBody
@ExceptionHandler
public Map<String,Object> baseControllerException(HttpServletRequest request,Exception ex){
Map<String,Object> stringObjectMap=new HashMap<>();
if(ex instanceof JsonException){
JsonException jsonException= (JsonException) ex;
stringObjectMap.put("code",jsonException.getCode());
stringObjectMap.put("message",jsonException.getMessage());
}else{
stringObjectMap.put("code","-200");
stringObjectMap.put("message","系統(tǒng)繁忙");
}
return stringObjectMap;
}
}
第三步:開發(fā)Action繼承基類
可以做業(yè)務(wù)異常分支處理
@Controller
@RequestMapping("/pay")
public class PayController extends BaseController {
@RequestMapping("/pay.do")
@ResponseBody
public Map<String,Object> pay(HttpServletRequest request) throws JsonException {
Map<String,Object> stringObjectMap= new HashMap<>();
String pay = request.getParameter("pay");
if(StringUtils.isEmpty(pay.trim())){
throw new JsonException(-100,"對不起參數(shù)為空");
}
try {
int i=1/0;
} catch (Exception e) {
e.printStackTrace();
throw new JsonException(-101,"對不起 除以0 了 ");
}
if("魏雪".equals(pay)){
stringObjectMap.put("code",200);
stringObjectMap.put("message","參數(shù)傳入正確");
}
return stringObjectMap;
}
}
拓展: 我們可以優(yōu)化代碼
在自定義異常中給出方法
在基類中返回自定義異常中的Map