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;
}
}
후속 방법 정리 중, 천천히 안쪽으로 추가합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환
前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
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";
}
}
프로그램 오류로 관리자에게 연락
${error}
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;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.