springmvc主要有三種處理異常的方法。java
1.使用SimpleMappingExceptionResolverweb
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView" value="error"></property> <property name="exceptionAttribute" value="e"></property> <property name="exceptionMappings"> <props> <prop key="xyz.yp.module.console.exception.BusinessException">error-business</prop> <!-- ...... --> </props> </property> </bean>
2.實現HandlerExceptionResolver接口spring
import com.alibaba.fastjson.support.spring.FastJsonJsonView; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DefaultExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception e) { // 返回json格式數據,不是頁面 FastJsonJsonView jsonView = new FastJsonJsonView(); jsonView.addStaticAttribute("code", "500"); jsonView.addStaticAttribute("message", e.getMessage()); ModelAndView mav = new ModelAndView(); mav.setView(jsonView); return mav; } }
<bean id="defaultExceptionHandler" class="xyz.yp.module.console.exception.DefaultExceptionHandler" />
3.使用ExceptionHandler註解json
@ExceptionHandler({ Exception.class }) public void handlerException(Exception e, HttpServletResponse response) { e.printStackTrace(); Map<String, Object> res = new HashMap<String, Object>(); res.put("code", "500"); res.put("message", "系統異常"); ServletUtils.writeToResponse(response, res); }