springmvc異常處理

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);
}
相關文章
相關標籤/搜索