全局异常处理
全局异常处理类
在日常代码编写中常常要写try{}catch{},来将代码中的异常抛出,即影响美观,又影响理解,在springboot中可以使用@ControllerAdvice 来注解控制类,并在处理异常类中使用@ExceptionHandler来指定异常类型,即可对该异常进行抓取,这样就不需要在普通的控制层代码中进行trycatch
实战
控制类GlobalExceptionHandler
在这个控制类中对异常栈进行处理,方便排查问题
这样返回的对应数据映射如下
msg:异常类型
fileName:抛出异常所在的类
className:抛出异常所在类的类路径
lineNumber:抛出异常代码行
methodName:排除异常代码所属方法
@ControllerAdvice
public class GlobalExceptionHandler {
private Log log = LogFactory.getLog(FundController.class);
/**
* 处理其他异常
*
* @param req
* @param e
* @return
*/
@ExceptionHandler(value = Exception.class)
@ResponseBody
public DataGridView exceptionHandler(HttpServletRequest req, Exception e) {
DataGridView dataGridView = new DataGridView();
e.printStackTrace();
StackTraceElement[] errorList = e.getStackTrace();
dataGridView.setMsg(e.toString());
dataGridView.setData(errorList[0]);
return dataGridView;
}
}
异常方法/testerror
@RequestMapping("testerror")
public DataGridView testerror(String stockId) {
DataGridView dataGridView = null;
//执行如下代码就会抛出异常,因为此时dataGridView未指定内存地址,调用set方法会抛出空指针异常
dataGridView.setCode(100);
return dataGridView;
}
调用异常方法返回:


浙公网安备 33010602011771号