남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
프로그램 오류
- 컴파일 에러 (compile-time error) : 컴파일 할 때 발생하는 에러
- 런타임 에러 (runtime error) : 실행 할 때 발생하는 에러
- 논리적 에러 (logical error) : 작성 의도와 다르게 동작
java의 런타임 에러
에러 (error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외 (exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
예외처리(exception handling)의 종류와 목적
정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것
목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행 상태를 유지하는 것
Exception 클래스와 자손 클래스
사용자의 실수와 같은 외적인 요인에 의해 발생하는 에러 (IOException, ClassNotFoundException)
RuntimeException클래스와 자손 클래스
프로그래머의 실수로 발생하는 에러 (AirthmeticException (산술계산) / ClassCastException (형변환) / NullPointException (널포인터) )
예외 처리하기 (try-catch문)
- 예외가 발생하면, 이를 처리할 catch블럭을 찾아 내려감
- 일치하는 catch블럭이 없으면, 예외는 처리 안됨
- Exception이 선언된 catch블럭은 모든 예외처리 (마지막 catch블럭)
try{
// 예외가 발생할 가능성이 있는 문장
} catch(Exception e1){
// Exception1이 발생했을 경우, 이를 처리하기 위한 문장
} catch(Exception e2){
// Exception2이 발생했을 경우, 이를 처리하기 위한 문장
}
* if문과 달리 try블럭이나 catch블럭 내에 포함된 문장이 하나 뿐이어도 괄호{} 생략 불가
printStackTrace()
- 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다.
getMessage()
- 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.
멀티 catch블럭
- 내용이 같은 catch블럭을 하나로 합친 것 (JDK1.7부터)
try{
...
}catch(ExceptionA | ExceptionB e){
e.printStackTrace();
}
댓글