자바-자린이의 도전기
예외처리 Exception 1-2) Checked Exception
광형
2022. 5. 9. 10:00
728x90
728x90
SMALL
예외처리 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