사용자의 오조작이나 외부 문제로 발생하는 오류
에러 Error
문법이나 메모리 사용 문제로 실행에 문자가 생겨 발생하는 오류
- 내가 만든 method에서 숫자형 변수에 문자열 데이터를 넣었다.
- 선언하지 않은 method를 호출 했다.
Compile Time에 실행 되는 exception, coding 중에 알 수 있으며 실행 되지 않고 Error Message를 console에 출력한다.
JVM 에서 필요하다고 판단하면 자동으로 예외처리를 해준다.
Run time 에 실행 되는 Exception으로 실행해 보아야 할 수 있다.
Exception은 불가피한 외부 문제로 발생하므로 예외 처리를 통해 프로그램이 정지 하지 않도록 해야만 한다.
예외 처리 방법으로는 try-catch와 throws 두가지 방법이 있다.
작업을 지시한 method로 예외에 대한 책임을 넘긴다는 의미로 프로그램 시작점에서도 throws를 할 경우 JVM에서 처리하게 된다. (예외 내용을 콘솔로 출력 )
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {}
문제 발생시 스스로 해결하는 것
try{
예외 발생 가능한 코드 ;
}catch (Exception e){
예외가 발생하면 실행 될 코드 ;
}finally{
예외에 상관없이 항상 실행 되어야 할 코드;
}
Multi catch 또는 OR Exception을 사용한다.
try {
dis.forward(req, resp); // 이 코드를 실행하다가
} catch (ServletException e) {// 이런 예외가 발생시..
System.out.println("서버와 통신과정에서 예외 발생");
} catch (IOException e) {// 다른 예외 발생시...
System.out.println("외부와 데이터 교환중에 예외 발생");
}
try {
dis.forward(req, resp); // 이 코드를 실행하다가
} catch (ServletException | IOException e) {// 둘 중하나의 예외 발생시 한곳에서 처리
System.out.println(e.toString());
}
try {
dis.forward(req, resp);
} catch (Exception e) {
System.out.println(e.toString());
}
기존 예외 이외에도 새로운 예외를 만들 수 있지만 Exception|RunTimeException 클래스를 상속 받아야만 한다.