본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 컴파일 에러 / 런타임 에러 / 논리적 에러 / 예외처리 정의 / 예외처리 목적 / Exception 클래스 / RuntimeException클래스 / 멀티 catch블럭 )

by ✲ 2020. 7. 19.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

프로그램 오류 

- 컴파일 에러 (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();
}

반응형

댓글