@Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아 하나의 메서드에서 처리해주는 기능
@RestController
public class MyRestController {
...
...
@ExceptionHandler(NullPointerException.class)
public Object nullex(Exception e) {
System.err.println(e.getClass());
return "myService";
}
}
@ControllerAdvice("")
public class ExceptionController {
private static final Logger LOG = LoggerFactory.getLogger(ExceptionController.class);
private ModelAndView mav;
@ExceptionHandler(Exception.class)
public ModelAndView handleException(HttpServletRequest request, Exception exception) throws Exception {
LOG.error("error : {}", exception);
String path = getResponsePath(request);
mav = new ModelAndView(path);
mav.addObject("Error", "서버에 오류가 발생하였습니다.");
return mav;
}
try {
// 예외가 생길 가능성이 있는 코드 작성
} catch (Exception e) {
// 예외처리 코드
e.printStackTrace();
}
----
public class Mathematics {
public static void main(String[] args) {
int num1, num2;
num1 = 12;
num2 = 0;
try {
System.out.println(num1 / num2);
} catch (ArithmeticException e) {
System.out.println("0으로는 값을 나눌 수가 없습니다.");
}
}
}
출력문구
public void test2() throws Exception {
int num1, num2;
num1 = 12;
num2 = 0;
try {
System.out.println(num1 / num2);
} catch (ArithmeticException e) {
System.out.println("0으로는 값을 나눌 수가 없습니다.");
// e.printStackTrace();
// return;
}
}