ABOUT ME

95.12.1 / 취준생 / Java

Today
Yesterday
Total
  • CHAPTER 8. (2) 멀티 catch 블럭이란?
    java/ㄴ CHAPTER 8. 예외처리 2020. 4. 23. 09:59

    멀티 catch 블럭
     - JDK 1.7부터 | 기호 사용, catch 블럭들을 하나로 합칠 수 있게 됨
     - 개수 제한 없음
     - 연결된 예외 클래스가 부모, 자식 관계라면 컴파일 에러
     ㄴ 왜? 부모 클래스만 쓰는 것과 같기 때문 (ex.FileNotFoundException | Exception)

     

    단점
     - 어떤 예외가 발생한건지 알 수 없음
     - 공통 분모인 부모 예외 클래스에 선언된 멤버만 사용 가능 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try {
     
    }
     
    catch (ExceptionA e1) {
     
    } catch (ExceptionB e2) {
     
    } catch (ExceptionC e3) {
     
    }
    1
    2
    3
    4
    5
    try {
     
    } catch (ExceptionA | ExceptionB | ExceptionC e) {
     
    }
     
    로 가능

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    package ex1;
     
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class ExceptionDemo2 {
        public static void main(String[] args) {
            try {
                FileReader reader = new FileReader("C:/setup.log");
                BufferedReader br = new BufferedReader(reader);
     
                String text = br.readLine();
                System.out.println("파일 내용 : " + text);
            } catch (FileNotFoundException  e) { 
    // 순서는 자식-부모 순서로 (부모 먼저 나오면 에러) 왜? 부모 먼저 나오면 자식이 부모한테 들어감
                
                System.out.println("파일이 존재하지 않습니다. 파일명을 다시 확인하세요.");
            } catch (IOException e) {
     
                System.out.println("파일을 읽어오는 도중 오류가 발생했습니다.");
            } catch (Exception e) {
                
                System.out.println("예상하지 못한 오류가 발생했습니다.");
            }
            
        }
        /*
        catch() {} 블록을 여러 개 작성해야 하는 경우
         예외를 catch 하는 순서 중요, 부모 클래스가 아래쪽에 위치해야 함
        맨 마지막 catch () {} 블록은 Exception 객체 잡음
         ㄴ catch() {} 블록에서 Exception 을 지정하면 생각하지 못한 예외도 해당 블록에서 잡을 수 있음 (갑작스러운 종료 방지)  
        */
    }
     
Designed by Tistory.