자바의 예외처리 방법인 try-catch에 대해서 정리해보자
다음의 코드를 보고 결과값을 생각해보자
public static void main(String[] args) throws Exception {
for(int i = 0; i < 10; i++) {
System.out.println(i);
if(i==5) {
throw new Exception();
}
}
}
해당 코드를 실행하면 출력값은 어떻게 될까???
출력값 : 0 1 2 3 4 5
5번 인덱스 출력 후 중단된다.
그럼 다음 코드의 출력값은 어떨까?
public static void main(String[] args) throws Exception {
for(int i = 0; i < 10; i++) {
System.out.println(i);
if(i==5) {
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
출력값 : 0 1 2 3 4 5 6 7 8 9
try-catch 내에서 예외가 발생하면 해당 예외는 catch 블록을 통해 예외가 처리된다.
따라서, 정상적으로 for loop가 작동하게 된다.
반면에, 맨위 코드의 경우 throw new Exception(); 을 통해 예외를 던지고 있다. 하지만 이것을 받아줄 catch 부분이 없기 때문에 종료되게 된다.
다중 try-catch
public static void main(String[] args) {
try {
System.out.println("외부 try 로직 수행.");
try {
System.out.println("내부 try 로직 수행");
Exception e = new Exception();
throw e;
} catch (Exception e) {
System.out.println("내부 try catch문 exeption : " + e);
System.out.println("예외 던지기 한번 더");
throw e;
}finally {
System.out.println("finally 구문 출력");
}
} catch (Exception e) {
System.out.println("외부 try - catch exception : " + e);
}
System.out.println("종료");
}
위 코드의 실행 순서를 생각해보자.
- '외부 try 로직 수행.' 출력
- '내부 try 로직 수행.' 출력
- '내부 try catch문 exception : java.lang.Exception' 출력
- '예외 던지기 한번 더' 출력
- 'finally 구문 출력' 출력
- '외부 try - catch exception : java.lang.Exception' 출력
- '종료' 출력
내부의 예외처리부분인 catch에서 강제로 Exception 을 한번 더 발생시켰을때 처리해줄 catch 부분이 외부 catch 부분이기 때문에
'외부 try - catch exception : java.lang.Exception' 이 출력되게 된다.
'Back-End > Java' 카테고리의 다른 글
할머니도 이해할 수 있는 자바 Thread (0) | 2025.05.01 |
---|---|
스레드 (0) | 2024.07.05 |
프로세스 (0) | 2024.07.04 |
Java HTTP 통신 (1) | 2024.06.12 |
Exception과 Transaction (0) | 2024.02.05 |