예외처리
예외
- 예측 가능한 상황에서 오류를 제어할 수 있는 것
- compile 시 발견할 수 있는 예외
- IDE가 빨간줄로 표시해준다. - runtime 시 발견할 수 있는 예외
- 프로그래머가 예외 처리를 해주어야 한다.
자바에서 모든 예외는 Exception 클래스를 상속 받는다.
try ~ catch
try {
} catch (IOException e) {
} catch (Exception e) {
} finally {
}
- try
- 예외가 발생할 만한 코드 작성 - catch
- 예외가 발생했을 때 처리하는 동작
- 여러개 작성 가능하다. 하지만 부모 클래스는 자식 클래스 catch보다 밑에 있어야 한다. 즉, Exception 클래스의 경우 모든 예외 클래스의 부모 클래스이므로 catch문에 사용하려면 가장 아래 catch문에 작성해야 한다. - finally
- 예외가 발생하든 안하든 수행해야 하는 코드
- 생략 가능하다.
trhows
- 예외를 여기서 처리하지 않고 전가하겠다는 것이다.
- try~catch 문 외에 예외를 호출한 곳으로 다시 예외를 떠넘기는 것이다.
- 발생할 수 있는 예외를 쉼표로 구분하여 나열할 수 있다.
public class ThrowsException {
public static void main(String[] args) {
try {
throwException();
} cetch (ClassNotFoundException e) {
System.out.println(e.getMessage());
}
}
static void throwsException() throws ClassNotFoundException, NullPointerException {
Class.forName("예외 발생");
}
}
// 출력: 예외 발생
- throws 키워드를 사용해 해당 예외를 발생한 메서드 안에서 처리하는 것이 아닌, 메서드를 호출한 곳으로 떠넘긴다.
- 여기서는 예외 처리의 책임은 throwException 메서드가 아닌 main 메서드가 지게 된다.
throw
- 의도적으로 예외를 발생시킨다.
- 예기치 않게 발생할 수 있는 에러에 대응할 수 있도록 사전에 코드를 작성하여 예외 처리
public class ThrowException {
public static void main(String[] args) {
try {
Exception intendedException = new Exception("의도적인 예외");
throw intendedException;
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
// 출력: 의도적인 예외
'TIL' 카테고리의 다른 글
[TIL] Invalid Gradle JDK configuration found. 인텔리제이와 GitHub 연동 & commit, push. static, final, static final (0) | 2024.04.29 |
---|---|
[TIL] 프로세스와 스레드, 모던 자바(filter) [Java] (0) | 2024.04.26 |
[TIL] 객체지향, 멤버, 접근 제어자, 상속, 추상 클래스, 인터페이스 [Java] (0) | 2024.04.24 |
[TIL] 연산자(우선순위, 비트 연산자), 배열, 컬랙션 [Java] (0) | 2024.04.23 |
[TIL]Java에 대하여, 변수, 형변환, Float.parseFloat() (0) | 2024.04.22 |