예외 처리

신형주·2023년 4월 27일
0

TryCatch문


public class TryCatchStudy1 {
    public static void main(String[] args) {
        try {                          //예외가 발생될 가능성이 있는 로직(source) 위치
            int r1 = 10 / 0;           //에러발생. println문 건너뛰고 catch로 이동
            System.out.println("다음줄");
            
        } catch (Exception e) {         //예외가 발생되었을 때 하고 싶은 작업(로직) 위치
            e.printStackTrace();        //에러문 출력
            System.out.println("예외 발생!");
            
        } finally {                      //옵션, 예외가 발생이 되든 안되든 무조건 실행하고 싶은 로직 위치
            System.out.println("파이널리");
        }
        System.out.println("끝!");
    }
}

Catch 구문은 계속 추가할 수 있고 예외종류에 따라 다르게 처리할 수 있다.
(Exception e)는 if문으로 비교하면 else구문에 해당하고, catch 구문이 여러 개라면 그들 중 가장 뒤에 위치해야한다.

throws로 예외 던지기

public class TryCatchStudy5 {
    public static void main(String[] args) {
        try {
            getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void getConnection() throws Exception{
        System.out.println("DB 연결");
    }

    public static void otherGetConnection() throws Exception{
        getConnection();
    }

    public static void otherGetConnection2() {
        try {
            getConnection();
        } catch (Exception e) {
        }
    }
}

한 메소드나 클래스에서 throws를 통해 예외를 던지게 되면 받는 쪽에서 반드시 처리를 해야한다.
위 코드는 getConnection()을 호출한 곳에서 trycatch구문으로 감싸 정상적으로 작동한다.

profile
코린이. 주니어 개발자

0개의 댓글