오류와 예외
오류는 크게 두 가지가 있다.
하나는 에러이고 또다른 하나는 예외이다.
에러는 프로그래머가 제어할 수 없고 코드로 복구가 불가능한 오류이다.
동시에 프로그래머가 예측할 수 없다
예외는 프로그래머가 예측할 수 있어 제어 및 처리가 가능하다.
예외처리
예외 처리에는 크게 두 가지 방법이 있다.
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 |