예외 처리
📌 예외
: 실행 중간에 발생하는 정상적이지 않은 상황.
📌 try - catch - finally 구문
: try 영역에서 예외 발생했을 때, catch 영역 실행.
try 영역 실행 시, finally 영역 무조건 실행됨. (finally 영역 사용은 선택 사항.)
try {
// 관찰 영역.
}
catch(Exception name) {
// 처리 영역.
}
finally {
//...
}
📌 try - with - resources 구문
: resource에서는 종료의 과정을 필요로 하는 리소스 생성.
catch 영역 생략 가능.
try(resource) {
// 관찰 영역.
}
catch(Exception name) {
// 처리 영역.
}
📌 throws 구문
: 설정한 예외 발생 시 예외 처리를 넘김.
📌 예외 상황 알리는 클래스
InputMismatchException | 클래스 Scanner를 통한 값 입력에서의 예외 발생 의미하는 클래스. |
ArithmeticException | 수학 연산에서 예외 발생 의미하는 클래스. |
ArrayIndexOutOfBoundsException | 배열 접근에 잘못된 인덱스 값 사용 예외 발생 의미하는 클래스. |
ClassCastException | 허용할 수 없는 형 변환 예외 발생 의미하는 클래스. |
NullPointerException | null이 저장된 참조변수를 대상으로 메소드를 호출한 예외 발생 의미하는 클래스. |
📌 Exception을 상속해 예외 클래스 정의 가능.
📄 ExceptionTest.java
package exceptionhandling;
import java.util.Scanner;
import java.util.InputMismatchException;
public class ExceptionTest {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
try {
System.out.print("a : ");
int n1 = s.nextInt();
System.out.print("b : ");
int n2 = s.nextInt();
System.out.print(n1 + " / " + n2 + " = " + n1/n2);
}
catch(ArithmeticException | InputMismatchException e) {
System.out.println(e.getMessage());
}
System.out.println("- end -");
}
}
Throwable 클래스
📌 java.lang.Throwable
: 예외 클래스의 최상위 클래스.
📌 발생한 예외 정보를 알 수 있는 메소드
public String getMessage( ) | 예외 원인을 문자열로 반환. |
public void printStackTrace( ) | 예외 발생한 위치와 호출된 메소드 정보 출력. |
📌 Throwable 클래스 상속하는 예외 클래스
① Error 클래스를 상속하는 예외 클래스.
② Exception 클래스를 상속하는 예외 클래스.
③ RuntimeException 클래스를 상속하는 예외 클래스.(RuntimeException 클래스는 Exception 클래스를 상속함.)
📌 Error 클래스 상속하는 예외 클래스
① VirtualMachineError : 가상머신에 심각한 예외 발생 의미하는 클래스.
- OutOfMemoryError : 프로그램 실행에 필요한 메모리 공간 부족 예외 발생 의미하는 클래스.
② IOError : 입출력 관련해 코드 수준 복구가 불가능한 예외 발생 의미하는 클래스.
📌 RuntimeException 클래스 상속하는 예외 클래스
① ArithmeticException : 수학 연산에서 예외 발생 의미하는 클래스.
② ClassCastException : 허용할 수 없는 형 변환 예외 발생 의미하는 클래스.
③ IndexOutOfBoundsException : 배열 접근에 잘못된 인덱스 값 사용 예외 발생 의미하는 클래스.
④ NegativeArraySizeException : 배열 생성 시 길이를 음수로 지정하는 예외 발생 의미하는 클래스.
⑤ NullPointerException : null이 저장된 참조변수를 대상으로 메소드를 호출한 예외 발생 의미하는 클래스.
⑥ ArrayStoreException : 배열에 적절하지 않은 인스턴스 저장하는 예외 발생 의미하는 클래스.
'Java > Java' 카테고리의 다른 글
[Java] 쓰레드(Thread) (0) | 2022.10.24 |
---|---|
[Java] I/O 스트림 (0) | 2022.10.22 |
[Java] 최종 연산 (0) | 2022.10.21 |
[Java] 중간 연산 - 정렬과 루핑(Looping) (0) | 2022.10.21 |
[Java] 리덕션(Reduction)과 병렬 스트림(Parallel Streams) (0) | 2022.10.21 |
댓글