자바-자린이의 도전기

예외처리 Exception 1-2) Checked Exception

광형 2022. 5. 9. 10:00
728x90
728x90
SMALL

https://kwanghyung.tistory.com/entry/%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC-Exception-1-1-RuntimeException

 

예외처리 Exception 1-1) RuntimeException

에러(오류)의 종류 -시스템 에러 : 컴퓨터의 오작동으로 인해 발생하는 에러  ->소스코드로 해결이 안됩니다.(심각한 에러) -컴파일 에러 : 프로그램 실행 전 소스코드상의 문법적인 문제로 발생

kwanghyung.tistory.com

배열활용


ArrayIndexOutOfBoundsException : 배열의 부적절한 인덱스로 접근할 때 발생하는 예외
NegativeArraySizeException : 배열의 크기를 음수로 지정했을때 발생하는 예외

예졔)


사용자로부터 배열의 크기를 입력받고 배열 만들기
100번 인덱스의 값을 출력하기.

public void method3() {

    Scanner sc = new Scanner(System.in);

    System.out.println("배열의 크기를 입력해주세요 (음수X) : ");

    int size = 0;

    try {
    size = sc.nextInt();

    int[] arr = new int[size];

    System.out.println(arr[100]);
    }
    catch(InputMismatchException e) {
        System.out.println("정수로 입력해주세요 윤정수아님 ;;");
    }
    catch(NegativeArraySizeException e) {
        System.out.println("배열의 크기는 음수가 될 수 없습니다; ");
//			e.printStackTrace();
    }
    catch(ArrayIndexOutOfBoundsException e) {
        System.out.println("배열의 크기를 벗어났습니다."+(size-1)+"인덱스까지 접근해주세요");
    }
    catch(RuntimeException e) { //다형성이 적용되어서 위에서 다 잡아버리기 때문에 아래에 자식클래스들에겐 기회가 없음.
        System.out.println("실행할때 오류남");

 CheckedException


  문법적으로 반드시 예외처리를 해줘야 하는 예외들
  (즉, 예측 불가한 곳에서 발생하기 때문에 미리 예외 처리 구문을 작성해야함)
  ->주로 외부 매체와 어떤 입출력 시 발생합니다.!
   
  CheckedException은 RuntimeException을 제외한 Exception들
  프로그램 실행 전 발생 - 컴파일 에러가 난다 - 예외처리 필수로 해줘야 프로그램을 실행시킬 수 있습니다.

public void method1() throws Exception { 

//만약 throws로 떠넘길때 어떤 구문이던 넘기고 싶다면 
//exception의 최고조상인 Exception을 적어주면 된다.

//		여기서 예외처리구문 try catch를 하던지 
//		try {
//			method2();
//		} catch (IOException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		여기서도 던져버리기 
		method2();
		
	}
	
	//method2에서 발생한 예외를 method1로 떠넘겨보자 
	//throws 예외클래스이름
	public void method2() throws Exception { //나를 호출한 곳으로 예외를 던져버리기.
	//Scanner와 같이 키보드로 값을 입력받을 수 있는 객체(문자열만 가능)
		
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
//	try {
//		String str = br.readLine();
//이 메소드를 호출 시 IOException이 발생할지도 모르니 예외처리해라.
//	} catch (IOException e) {
//		// TODO Auto-generated catch block
//		e.printStackTrace();
//	}
	
	String str = br.readLine();
	str=null;
		
	System.out.println(str.length());
	}
	
	
	//메소드를 만들어서 예외를 발생시키고 throws로 넘겨보기 
	//throws new exception이름 원하는거
	
	public void method3() {
		throw new RuntimeException();
	}
	
	public void method4() throws Exception {
		method3();
		throw new Exception();
	
	}
	
}
728x90
300x250
LIST