- 예외처리의 목적
- 예외의 발생으로 인한 실행 중인 프로그램의 비정상 종료를 막기 위해
- 개발자에게 알려서 코드를 보완할 수 있도록 하게 위해
- 자바에서는 상속을 이용해서 모든 예외를 표현합니다. 모든 예외 클래스는 Throwable의 자손 클래스 입니다.
- Throwable 에는 크게 두 종류의 자식 클래스가 있습니다.
- Error 는 프로그램이 종료되어야 하는 심각한 문제를 표현합니다. 대부분 컴퓨터나 JVM이 시스템적으로 동작할 수 없는 상황을 표현합니다.
- Exception 은 프로그램이 종료되지는 않지만 예외나 문제상황을 표현하기 위해 사용합니다.
- 예외 상황은 대부분 Exception 종류
- 실행도중 발생하는 Exception은 RuntimeException을 상속받아서 정의
- 파일을 읽고 쓰거나, 원격에 있는 저장소로부터 데이터를 읽고 쓸 때 나는 에러를 표현하려면 IOException을 상속받아서 정의
try-catch(-finally) 형식 예제
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class Main {
public static void main(String[] args) {
int number = 10;
int result;
for (int i = 10; i >= 0; i--) {
try {
result = number / i;
System.out.println(result);
} catch (Exception e) {
System.out.println("Exception발생: " + e.getMessage());
} finally {
System.out.println("항상 실행되는 finally 구문");
}
}
}
}
|
cs |
try-with-resource 형식
입출력과 함께 자주 쓰이는 구문
기존의 try-catch(-finally)문은 자원을 닫을 때 close()를 사용
try-with-resource문은 try문을 벗어나는 순간 자동적으로 close()가 호출
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try (FileOutputStream out = new FileOutputStream("test.txt")) {
// test.txt file 에 Hello Sparta 를 출력
out.write("Hello Sparta".getBytes());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
cs |
개발을 하다보면 꼭 마주치는 예외, 에러 상황에서 프로그램을 동작하게 만들어주는 기능
필요한 부분에 사용하되 남용하지 않는 것이 좋겠다.
'TIL' 카테고리의 다른 글
| 2022.11.17 JAVA 객체지향 (0) | 2022.11.17 |
|---|---|
| 2022.11.16 TIL JAVA 날짜와 시간 (0) | 2022.11.16 |
| 2022.11.14 TIL 알고리즘 4장 (0) | 2022.11.14 |
| [WIL] 2022.11.07~11.11 (0) | 2022.11.13 |
| 2022.11.11 TIL 알고리즘 정렬 / CPU (0) | 2022.11.11 |