Unlike Springmvc global exceptions in traditional collections, see the previous section, https://www.cnblogs.com/zwdx/p/8963311.html
For the springboot framework, I will introduce one of them.
1、ExceptionHandlerAdvice
import javax.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /** * Handling exception information*@author wdh * */ @ControllerAdvice @ResponseBody public class ExceptionHandlerAdvice extends MyExecption{ @ExceptionHandler(Exception.class) public ResultDTO handleException(Exception e,HttpServletResponse response) { return handler(e, response); } }
Because the front and rear ends are separated, use @ResponseBody to return to JSON.
2、MyExecptionHandler
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONObject; /** * Custom exception handling*@author wdh * */ public class MyExecptionHandler{ public ResultDTO handler(Exception e,HttpServletResponse response){ ResultDTO result; if (e instanceof SysException) { result = handleSysException((SysException) e); } else if (e instanceof ServiceException) { result = handleServiceException((ServiceException) e); } else { result = handleSysException(new SysException(ERRORConstants.COMMON_SYSTEM_ERROR, e)); } responseOutWithJson(response, result); return result; } private ResultDTO handleSysException(SysException ex) { ResultDTO result = new ResultDTO(); result.setCode(ex.getCode()); if(StringUtil.isNotEmpty(ex.getMsg())){ result.setMessage(ex.getMsg()); }else { result.setMessage(MessageEnums.fromcode(ex.getCode())); } return result; } private ResultDTO handleServiceException(ServiceException ex) { ResultDTO result = new ResultDTO(); result.setCode(ex.getCode()); result.setMessage(MessageEnums.fromcode(ex.getCode())); return result; } protected void responseOutWithJson(HttpServletResponse response, Object responseObject) { JSONObject responseJSONObject = JSONObject.fromObject(responseObject); String jsonString = responseJSONObject.toString(); String code = responseJSONObject.getString("code"); if (ERRORConstants.COMMON_EXCEL_FORMAT_ERROR.equals(code)) { response.setContentType("text/html;charset=UTF-8"); } else { response.setContentType("application/json; charset=utf-8"); } response.setCharacterEncoding(GlobalConstants.DEFAULT_ENCODING); PrintWriter out = null; try { out = response.getWriter(); out.append(jsonString); } catch (IOException e) { } finally { if (out != null) { out.close(); } } } }
The exception code is defined for itself.GlobalConstants,MessageEnums