Java

[Java] 예외처리 (try ~ catch)

jny0 2023. 2. 24. 18:34

try ~ catch

예외가 발생할 때 그에 맞는 적절한 처리가 가능하다.

어떤 예외가 발생할지 모를 때는 catch(Exception e) 사용

try {
    ...
} catch(예외1) {
    ...
} catch(예외2) {
    ...
}



finally

finally : 예외가 발생여부에 상관없이 공통적으로 수행되어야 할 코드

try {
    ...
} catch(예외1) {
    ...
} catch(예외2) {
    ...
} finally {
        ...
}



throws

throws : 예외던지기. 예외를 당장 처리하지 않고, 자신을 호출한 로직에서 처리되게끔 던지는 기능 (특정 로직에서 특정 예외를 공통적으로 처리하고자 할 때 사용)

 class Main {
    public static void main(String[] args) {
        int[] datas = new int[2];

        try {
            work(datas);
        }
        catch ( IllegalArgumentException e ) { // v1 의 코드보다 원인이 좀 더 명확해진다. 즉 v1 보다 더 가독성 높은 코드이다.
            System.out.println("이런.. 오류가 발생했군요.");
        }
    }

    static void work(int[] datas) {
        if ( datas.length < 3 ) {
            throw new IllegalArgumentException(); // 함수가 여기서 멈춤
        }

        datas[0] = 10;
        datas[1] = 20;
        datas[2] = 30;
    }
}


throw new : 예외 발생시키기 (검증시 사용)

  • 발생시키고자 하는 예외를 생성한다 Exception e = new Exception("고의 발생 예외");
    • throw 키워드를 이용해 예외를 발생시킨다 throw e;
  • 바로 new 키워드로 예외 객체를 생성해도 된다. throw new Exception("고의 발생 예외");
class Main {
    public static void main(String[] args) {
        int[] datas = new int[2];

        try {
            work(datas);
        }
        catch ( IllegalArgumentException e ) { // v1 의 코드보다 원인이 좀 더 명확해진다. 즉 v1 보다 더 가독성 높은 코드이다.
            System.out.println("이런.. 오류가 발생했군요.");
        }
    }

    static void work(int[] datas) {
        if ( datas.length < 3 ) {
            throw new IllegalArgumentException(); // 함수가 여기서 멈춤
        }

        datas[0] = 10;
        datas[1] = 20;
        datas[2] = 30;
    }
}