TemplateExceptionHandler.java
package cn.home1.oss.lib.errorhandle.internal;
import cn.home1.oss.lib.errorhandle.api.ExceptionResolver;
import cn.home1.oss.lib.errorhandle.api.ResolvedError;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Created by zhanghaolun on 16/8/22.
 */
public class TemplateExceptionHandler {
  private String errorPage;
  @Qualifier(ExceptionResolver.COMPOSITE_EXCEPTION_RESOLVER)
  @Autowired
  @Setter
  private ExceptionResolver<Throwable> exceptionResolver;
  public ModelAndView resolveAndHandle( //
    final HttpServletRequest request, //
    final HttpServletResponse response, //
    final Throwable throwable //
  ) {
    final ResolvedError resolvedError = this.exceptionResolver.resolve(request, throwable);
    return this.handleResolved(request, response, resolvedError);
  }
  public ModelAndView handleResolved( //
    final HttpServletRequest request, //
    final HttpServletResponse response, //
    final ResolvedError resolvedError //
  ) {
    final ModelAndView mav = new ModelAndView(this.errorPage);
    mav.addObject(ResolvedError.RESOLVED_ERROR_OBJECT, resolvedError);
    return mav;
  }
  public void setErrorPage(final String errorPage) {
    this.errorPage = errorPage;
  }
}