package com.dounine.corgi.exception; import com.alibaba.fastjson.JSON; import com.dounine.corgi.commons.ResponseText; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * Created by huanghuanlai on 16/4/23. */ public class ExceptionHandler extends AbstractHandlerExceptionResolver { private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionHandler.class); private static final int COMMON_ERROR_CODE = 3; @Override protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { if(ex.getCause() instanceof SerException | ex instanceof RPCException){ ResponseText responseText = new ResponseText(); responseText.setCode(COMMON_ERROR_CODE); responseText.setMsg(ex.getMessage()); response.setContentType("text/json;charset=utf-8"); response.setCharacterEncoding("utf-8"); Object resp = null; String callback = request.getParameter("callback"); if(StringUtils.isNotBlank(callback)){ resp = new StringBuffer(callback).append("(").append(JSON.toJSON(responseText)).append(")"); }else{ resp = JSON.toJSON(responseText); } try { response.getWriter().print(resp); } catch (IOException e) { e.printStackTrace(); } return new ModelAndView(); } return null; } }