Back_end/JAVA

JAVA - 예외처리

hyeon1016 2024. 9. 23. 01:54

예외

 

프로그램 실행 중 발생하는 오류 중에서 처리가 가능한 것을 예외라 한다.

 

 

예외 처리

 

예외가 발생했을 때, 프로그램이 비정상적으로 종료되는 것을 막는 방법

예외처리 해야 될 곳은 정해져 있다.
-이클립스에서 try 쓰라는 오류가 발생했을 때 사용하면 된다.

 

 

try-catch문

 

try문으로 예외가 발생할 가능성이 있는 문장을 중괄호로 묶어준다.

catch문에서 소괄호 안에는 예외 클래스의 종류와 참조변수를, 중괄호 안에는 예외 발생 시 실행할 코드를 작성한다.

예시

try{
    //예외 발생 가능성이 있는 문장들
} catch(예외 1) {
    //예외 1에 알맞는 처리
} catch(예외 2) {
    //예외 2에 알맞는 처리
}

 

 

finally문

 

예외 발생 여부와 상관없이 반드시 실행시키는 구문이다.

try-catch문과 함께 사용한다.

예시

try{
    //예외 발생 가능성이 있는 문장들
} catch(예외 1) {
    //처리
} finally {
   //무조건 실행
}

 

 

 

객체로서의 예외

 

Exception

 

자바에서는 예외도 객체로 처리하는데, 모든 예외 클래스의 부모가 바로 Exception이다.

즉 모든 예외 클래스들을 Exception형의 참조변수로 참조할 수 있다.(모든 예외 처리 가능)

try{
    //예외 발생 가능성이 있는 문장
} catch(Exception e) {
    //처리
}

 

 

 

 

Exception의 메서드

 

getMessage();
toString();
printStackTrace();

 

 

예외 발생 throw

 

개발자가 고의로 예외를 발생시킬 때 사용하는 코드다.
thorw문 뒤에 예외 객체를 붙여 사용할 수 있다.

예시


1. 참조변수를 사용

Exception e1 = new Exception();
throw e1;



2. 직접 던지기

throw new Exception();

 

 

 

예외 던지기 throws

 

메서드에서 예외가 발생했을 때, 호출한 쪽으로 예외를 던지는 것이다.
예외를 받은 쪽은 직접 예외 처리를 하거나 예외를 던져야하는 문법적 강제성이 발생한다.

예시

void a() throws Exception{
    //예외 발생
}

 

 

사용자 정의 예외

 

예외 클래스를 개발자가 직접 정의할 수도 있다.

언제?
-기존 API에서 제공하는 예외 클래스만으로 예외의 경우를 표현할 수 없는 경우

예시

class e1 extends Exception {
    e1(){}
    e1(String a){
        super(a);
    }
}

throw new e1("테스트");