[JAVA]예외처리(Exception handling)

coldbrew·2023년 8월 11일
0

프로그램 오류 종류

컴파일 에러(compile-time error) : 컴파일 할 때 발생하는 에러
런타임 에러(runtime error) : 실행 할 때 발생하는 에러
논리적 에러(logical error) : 작성 의도와 다르게 동작

자바 컴파일러 : 구문체크, 번역, 소스코드 최적화

Java의 런타임 에러

에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

예외처리의 정의와 목적

정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것
목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것

Exception : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
RuntimeException : 개발자의 실수로 발생하는 예외

try-catch문


try블럭에 예외가 발생하면 빠져나와서 catch블럭으로 바로 이동한다.

printStackTrace()와 getMessage()

printStackTrace() : 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다.
getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.

예외 발생시키기

  1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든다.
  2. 키워드 throw를 이용해서 예외를 발생시킨다.

CheckedException : 컴파일러가 예외 처리 여부를 체크(예외 처리 필수)
UnCheckedException : 컴파일러가 예외 처리 여부를 체크 안함(예외 처리 선택)

메서드에 예외 선언

예외를 처리하는 방법 : try-catch문(직접 처리), 예외 선언(예외 떠넘기기)

예외 선언 : 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것



호출한 메서드에 try-catch문이 있어야 예외가 처리되고 이렇게 떠넘기기만 하면 처리되지 않은 상태가 된다.(프로그램 비정상 종료)

finally블럭

예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다.
try-catch문의 맨 마지막에 위치해야한다.

0개의 댓글