티스토리 뷰

예외처리(Exception) 이란? 예외가 발생하는지 검사하고 예외가 발생할 경우 

프로그램이 비정상 종료가 되는 것을 방지하기 위해 처리하는 것



* 필수는 아니지만 강력하게 권고하는 프로그래밍 스킬입니다.



예외의 종류

- 예외의 종류에 따라 처리되지 않아도 되는 예외가 있다.


예외의 종류

설명

컴파일러 체크

Error

자바 가상 기계 안에서 오류가 발생시 생성된다.

X

RuntimeException

프로그래밍 버그, 논리오류에서 기인한다.

X

CheckedException

Error와 RuntimeException을 제외한 나머지 예외이다.

회복 될 수 있는 예외이므로 프로그램은 반드시 처리해야 한다.

(처리가 되지 않을 경우 컴파일 오류 발생)

O



분류

예외 타입(예외 클래스)

예외 발생 경우

RuntimeException

ArithmeticException

어떤 수를 0으로 나누었을 경우

NullPointerException

null 객체를 참조했을 경우

ClassCastException

변환할 수 없는 타입으로 객체를 변환했을 경우

NegativeArraySizeException

배열의 크기가 음수 값인 경우

OutOfMemoryException

사용 가능한 메로리가 부족한 경우

NoClassDefFoundException

원하는 클래스를 찾지 못했을 경우

ArrayIndexOutOfBoundsException

배열을 참조하는 인덱스가 잘못됐을 경우

NumberFormatException

문자열이 나타내는 숫자와 일치하지 않은 

타입의 숫자로 변환했을 경우

InputMismatchException

정수로 입력해서 문자를 입력했을 경우

IOException

입출력 동작 실패, 인터럽트 발생한 경우



try - catch - finally 문법

try{
     예외가 발생할 수 있는 코드
} catch(예외타입클래스 예외명){
      예외를 처리하는 코드
} finally{
      예외 발생 여부와 상관없이 무조건 실행된다. (생략가능)
}




키워드

설명

throws

- 예외를 발생할 가능성이 있다는 의미를 가지고 있다. 

thorw

- "예외를 던지다, 발생시키다" 라는 의미를 가지고 있다.

- 예외객체를 생성하는 키워드이다.

- 강제로 예외를 발생시킬 수 있다.

- Throw 문장은 하나의 인수, Throwable만을 요구한다.

  ex) throw someThrowableObject





예외처리에 대해 실습을 통해 공부하겠습니다.

import java.util.InputMismatchException;
import java.util.Scanner;

public class ExampleException {
	public static void main(String[] args) {
		// 사용자의 키보드로부터 입력 받게 해주는 Scanner
		Scanner scan = new Scanner(System.in);

		int num1 = 10;
		int num2 = 2;

		// 예회처리 try ~ catch ~ finally
		// try: 예외 발생 가능 문장
		// catch: try에서 발생한 예외를 처리하는 구간. 여러개가 올 수 있다. -> else if와 비슷
		// finally: try에서 모든 코드가 제대로 실행되던, catch에서 오류가 처리되던 무조건 실행되어야 할 문장
		// 보통 try가 끝날 때 실행할 문장과 catch가 끝날 때 실행할 문장이 중복 될 경우가 많이 사용된다.
		
		try {
			num2 = scan.nextInt();

			int result = num1 / num2; // 예외를 던지면
			System.out.println("result: " + result);

			// catch에서 받는다.
		} catch (ArithmeticException e) {

		} catch (Exception e) {
			// 1) Exception e = new ArimeticException(); -> UpCasting
			// 2) Exception e = new InputMispatchException(); ->UpCasting
			e.printStackTrace();
			// 어떤 예외가 발생하더라도 한번에 처리가 가능하다.
		}finally{
                        System.out.println("프로그램 종료");
                }

		// 예외객체 활용
		// getMessage() => 어떤 에러가 발생하였는지 알려준다.
		// printStackTrace()=> 에러 위치 및 에러 내용을 상세하게 보여준다.

	}
}


반응형
LIST
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함