Java - Exception handling

iseon_u·2022년 5월 14일
0

Java

목록 보기
40/77
post-thumbnail

Exception handling 예외처리


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

try-catch 문

try {
		// 예외가 발생할 가능성이 있는 문장들을 넣는다.
} catch (Exception1 e1) {
		// Exception1 이 발생했을 경우, 이를 처리하기 위한 코드 작성
} catch (Exception2 e2) {
		// Exception2 이 발생했을 경우, 이를 처리하기 위한 코드 작성
} catch (ExceptionN eN) {
		// ExceptionN 이 발생했을 경우, 이를 처리하기 위한 코드 작성
}
  • if 문과 달리, try 블럭이나 catch 블럭 내에 포함된 문장이 하나뿐이어도 괄호 {} 생략 불가

try-catch 문의 흐름

  1. try 블럭 내에서 예외가 발생한 경우
    1. 발생한 예외와 일치하는 catch 블럭이 있는지 확인한다.
    2. 일치하는 catch 블럭을 찾게 되면 그 catch 블럭 내의 문장들을 수행
    3. 전체 try-catch 문을 빠져나가서 그 다음 문장을 계속 수행한다.
    4. 만일 일치하는 catch 블럭을 찾지 못하면 예외는 처리되지 못한다.
  2. try블럭 내에서 예외가 발생하지 않은 경우
    1. catch 블럭을 거치지 않고 전체 try-catch 문을 빠져나가서 수행을 계속한다.

Exception

  • 모든 예외의 최고 조상
  • Exception이 선언된 catch 블럭은 모든 예외 처리 가능
  • 이러한 catch 블럭은 마지막에 작성

예외 객체

  • 예외가 발생하면 예외 객체가 생성된다.
  • 예외 객체에 있는 메서드들로 예외 정보를 가져올 수 있다.
try {
		System.out.println(0/0); // exception
} catch (ArithmeticException ae) { // 참조 변수 ae
		ae.printStackTrace();
		System.out.println(ae.getMessage());
} catch (Exception e) { // 참조 변수 ae 의 유효 번위 (Scope)
}

printStackTrace()

  • 예외 발생 당시의 호출 스택 (Call Stack) 에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다.

getMessage()

  • 발생한 예외 클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.

멀티 catch 블럭

  • 내용이 같은 catch 블럭을 하나로 합친 것 (JDK 1.7 부터)
try {
} catch (ExceptionA e) {
		e.printStackTrace();
} catch (ExceptionB e2) {
		e2.printStackTrace();
}
try {
} catch (ExceptionA | ExceptionB e) {
		e.printStackTrace();
}
  • 두 예외 클래스가 상속 관계면 에러 🔴
    • 부모 클래스만 사용하는 것과 같은 의미
  • 한 예외 클래스에만 있는 멤버 사용 불가 🔴
    • 둘 중 어느 예외 클래스가 적용될지 모른다.
    • 두 예외 클래스의 공통 멤버만 사용 가능 ✅
profile
🧑🏻‍💻 Hello World!

0개의 댓글