본문 바로가기
Java/Java

[Java] 예외 처리

by 기록하는_사람 2022. 10. 22.

예외 처리

📌 예외

: 실행 중간에 발생하는 정상적이지 않은 상황. 

 

📌 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

댓글