코드 그라데이션

Day30-2. 예외처리(Exception) 본문

Java/Mega

Day30-2. 예외처리(Exception)

완벽한 장면 2023. 4. 24. 21:45

예외와 오류

- 프로그램 실행 중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리하는 것을 예외처리라고 한다.

- 기본적으로 런타임 시점에서 발생하는 오류는 에러(error) 예외(exception)으로 나뉜다.

 

에러(Error)

: 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이

  일단 발생하면 복구할 수 없는 심각한 오류

예외(exception)

: 인자값 Null 에러NPE(NullPointException)같은 발생하더라도 수습이 가능한 덜 심각한 오류.

 

예제 1 >

package mega.backend_onemore.Day30;

import java.io.FileReader;

// 방법 1.

public class ExceptionTest1 {

  public static void main(String[] args) {

    FileReader fr;

    try { // 파일이 존재하지 않는 경우가 있을 수 있음.
      fr = new FileReader("test.txt");
      int value;
      while((value = fr.read()) != -1) {
        System.out.println((char)value);
      } // read는 읽으려고 할 때 파일이 무조건 있어야 함.
      fr.close();
    } catch(Exception e) {
      System.out.println("에러 발생 : " + e);
      // e에서 에러에 대한 정보를 모두 담고 있음.
    } finally {
      System.out.println("하2 나는 무조건 실행됨");
    }

  }
}

 

예제 2> 

throw는 통제가 안 됨.

던지고 끝낼 것이니까.

package Day30;

import java.io.FileReader;


// 방법 2.
public class ExceptionTest2 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		
		FileReader file = new FileReader("a.txt");
		int i;
		while((i = file.read()) !=-1) {
			System.out.println((char) i);
		}
		file.close();

	}

}

 

예제 3 >

package Day30;

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

public class ExcptionTest3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int num = 0;
		while(true) { // 계속 입력받을 거니까. 
			try {
				System.out.print("숫자 : ");
				num = sc.nextInt();
				System.out.println("입력 받은 숫자 : " + num);
				break;
			}
			catch (InputMismatchException e) { // 이상하게 입력을 받은 경우.
				sc.nextLine(); // 한 줄 날려버려야 함. 이상하게 입력한 문자를 클리어
                // 날리고 나서 다시 받아야함.
				System.out.println("올바르게 숫자를 입력하세요.");
				
			}
		}

	}

}
728x90
Comments