Ⅰ. 예외(Exception) 및 예외 처리
- 코드는 문법을 기반으로 작성함
- 문법을 틀리면, 코드가 동작할 수 없음 (컴파일러가 컴파일을 안 해주기 때문)
1. 예외(Exception)와 에러(Error)의 차이점
- 오류(Error) : 문법이 틀려서 동작할 수 없는 상태 → 수습 불가능, 코드를 수정해야 함
- 예외(Exception) : 문법은 맞는데 프로그램 논리적으로 맞지 않아 발생하는 객체 → 수습 가능, 코드를 추가하여 피해감
2. 예외 처리
- 예외의 종류는 무척 다양함 (또한, 각 예외마다 이름을 가지고 있음)
- 프로그램 실행 중 예외가 발생하면 프로그램 내에서는 예외 객체가 생성됨
→ 이를 감지하여 처리해 주는 작업을 가리켜 '예외 처리'라고 함
- 예외 처리를 위해서는 try-catch 문을 사용
※ try문의 특징 : 내부에 아무리 긴 코드가 있어도, 예외가 발생하면 코드가 종료됨
→ 중요한 구문을 실행하지 못하는 상황이 발생할 수 있음 (그럴 땐, finally 구문 추가
※ finally : 예외처리 되더라도 무조건 실행됨
※ Exception : 모든 예외의 조상 클래스로, 다형성이 적용됨
// 기본 문법 구조
try {
예외가 발생할 수도 있는 구문
} catch(ArithmeticException e) {
예외 발생시, 구문
}
// Example1
package sample;
public class Main {
public static void main(String[] args) {
// 예외처리
// try : 예외가 발생할지도 모르는 부분을 묶는 구문
// catch : 예외 처리 방법을 적는 구문. 이 때, 예외를 인자로 받음
try {
int a = 4;
int b = 0;
int c = a / b; // 문법은 맞으나, 논리적으로 불가능
} catch(Exception e) { // 예외 매개변수
System.out.println("예외 발생을 알립니다"); // 예외 발생을 알립니다.
}
}
}
// Example2
package sample;
public class Main {
public static void main(String[] args) {
try {
int[] arr = new int[3];
arr[5] = 3;
} catch(Exception e) { // Exception만 써도 예외처리 가능
System.out.println("예외 발생을 알립니다"); // 예외 발생을 알립니다.
}
}
}
// Example3
package sample;
public class Main {
public static void main(String[] args) {
// try는 예외 발생 지점에서 끝남
// finally : 예외 처리까지 다 마치고 난 후에 실행될 코드를 묶는 부분
try {
int[] arr = new int[3];
arr[5] = 3;
} catch(Exception e) { // Exception만 써도 예외처리 가능
System.out.println("예외 발생을 알립니다"); // 예외 발생을 알립니다.
} finally {
System.out.println("하하"); // 하하
System.out.println("하하"); // 하하
System.out.println("하하"); // 하하
}
}
}
'Programming Language > Java' 카테고리의 다른 글
예외처리 - 3. 예외(Exception) 클래스 사용자 정의 (0) | 2022.07.14 |
---|---|
예외처리 - 2. 예외(Exception)의 전가(throws) (0) | 2022.07.14 |
이너클래스 - 3. 이너인터페이스(Inner interface) (0) | 2022.07.14 |
이너클래스 - 2. 익명이너클래스(Anonymous class) (0) | 2022.07.14 |
이너클래스 - 1. 이너클래스 (Inner class) (0) | 2022.07.14 |