본문 바로가기

Java/Base

[JAVA] 예외처리

오류와 예외

오류는 크게 두 가지가 있다.

하나는 에러이고 또다른 하나는 예외이다.

 

에러는 프로그래머가 제어할 수 없고 코드로 복구가 불가능한 오류이다.

동시에 프로그래머가 예측할 수 없다

 

예외는 프로그래머가 예측할 수 있어 제어 및 처리가 가능하다.

 

예외처리

 

예외 처리에는 크게 두 가지 방법이 있다.

 

Exception 클래스를 상속받아 처리하는 방법과 throws를 사용하는 방법이다.

 

○ Exception

 

Exception 클래스를 사용하는 방법은 문제를 해결하여 복구하는 방법이다.

 

try {
	...
} catch (예외종류 name) {
	...
} finally {
	...
}

 

try : 예외가 발생할 수 있는 코드가 위치하는 곳.

catch : 예외 종류에 맞는 예외가 발생하였을 때 어떻게 처리할 것인지 설정. (순서대로 처리하기 때문에 부모 예외가 자식 예외보다 먼저 올 수 없다.)

finally : 예외와 상관없이 반드시 수정. (리소스 반납 및 마무리)

 

○ throw / throws

 

예외를 직접 처리하지 않고 다른 메소드에게 위임해 회피하는 방식이다.

 

public class ThrowsTest {
	public static void main(String[] args) {
    	try {
        	int num = divide(10, 0);
        } catch (Exception e) {
        	e.printStackTrace();
        }
    }
    
    public static int divide(int i, int j) throws Exception {
    	if(j == 0){
        	throw new Exception("0으로는 나눌 수 없습니다.")
        }
        int k = i / j;
        return k;
    }
}

 

위와 같이 divide 메소드에서 발생하는 예외를 메소드를 사용하는 상위 메소드에서 처리하는 방식이다.

throw를 통해 특정 조건에서 고의적으로 예외를 발생시킬 수 있다.

만들어낸 예외 조건에 부합하는 예외의 처리는 throws를 이용해 해당 메소드를 사용하는 상위 메소드에서 처리할 수 있도록 한다.

 

이러한 예외 처리 방식을 사용하는 이유는

한가지 메소드도 여러 곳에서 사용되기에 각각 다른 오류가 발생할 수 있기 때문이다.

 

아직 throw와 throws에 대해 완벽히 이해되지가 않는다.

위처럼 예시를 들어 이해했나 싶으면 다른 상황에서는 어찌해야할지 감이 안온다.

'Java > Base' 카테고리의 다른 글

[JAVA] 파일 입출력  (0) 2023.09.07
[JAVA] 리스트  (0) 2023.09.07
[JAVA] 키보드 입력  (0) 2023.09.06
[JAVA] 배열  (0) 2023.09.05
[JAVA] 생성자  (0) 2023.08.17