springboot에서 오류 처리된 몇 가지 방법

3868 단어 springboot

잘못된 처리


프로그램 시작 시 기본 호출
2018-09-27 15:19:43.439 |-INFO [restartedMain] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping [543] -| Mapped "{[/error]}"onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-09-27 15:19:43.439 |-INFO [restartedMain] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping [543] -| Mapped "{[/error],produces=[text/html]}"onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)

사용자 정의 오류 페이지 추가


 
1html 정적 페이지:resources/public/error/에서 정의
404 페이지 추가: resources/public/error/404.html 페이지, 중국어 주의 페이지 인코딩
페이지를 찾을 수 없습니다.
 
2 템플릿 엔진 페이지:templates/error/에서 정의
5xx 페이지 추가: templates/error/5xx.ftl
이상 던지고 이거 써.
templates/error/이 우선순위는 리소스/public/error/높음
 

Spring Boot에서 모든 오류를 /error에 기본적으로 매핑하여 ErrorController 구현


freemarker 템플릿 엔진 사용하기

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @task:
 * @description:
 * @author: sigon
 * @createTime: 2018 09 27  15:24
 */
@Controller
@RequestMapping("/error")
public class BaseErrorController implements ErrorController {
   private static final Logger logger = LoggerFactory.getLogger(BaseErrorController.class);
   @Override
   public String getErrorPath() {
      logger.info(" ");
      return "error/error";
   }

   @RequestMapping
   public String error(ModelMap map) {
      map.put("error", " !!!!");
      return "error/error";
   }

}

두 번째 단계
resources/templates 아래에 error 폴더를 만들고 error 폴더에 error를 만듭니다.ftl 템플릿 파일.내용을 입력하다.정적 페이지나



	
	 


	

프로그램 오류로 관리자에게 연락

${error}

 

메모 @ControllerAdvice 사용

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.ModelAndView;

/**
 * @task:
 * @description:
 * @author: sigon
 * @createTime: 2018 09 27  16:10
 */
@ControllerAdvice
public class MyExceptionHandler {

   private static final Logger logger = LoggerFactory.getLogger(MyExceptionHandler.class);
   
   @ExceptionHandler({RuntimeException.class})
   @ResponseStatus(HttpStatus.OK)
   public ModelAndView processException(RuntimeException exception) {
      logger.info(" ");
      ModelAndView modelAndView = new ModelAndView();
      modelAndView.addObject("myException", exception.getMessage());
      modelAndView.setViewName("/error/500");
      return modelAndView;
   }

   /**
    *  
    *
    * @param exception
    *            exception
    * @return
    */
   @ExceptionHandler({ Exception.class })
   @ResponseStatus(HttpStatus.OK)
   public ModelAndView processException(Exception exception) {
      logger.info(" ");
      ModelAndView modelAndView = new ModelAndView();
      modelAndView.addObject("myException", exception.getMessage());
      modelAndView.setViewName("error/500");
      return modelAndView;
   }

}

 
후속 방법 정리 중, 천천히 안쪽으로 추가합니다.

좋은 웹페이지 즐겨찾기