2023. 12. 26. 19:33ㆍ2023.11.21-2024.05.31
package com.sukgi.exception;
//익셉션 예외
//예외, 오류, 핸들링, try, catch, finally
/*
* 444p
* 자바에서는 예외라는 것을 두고 목적에 따라서 핸들링(처리)하도록 되어있습니다.
*
* 예외는 주로 실행시에 발생되는 모든 에러상황을 예외로 정의합니다.
* 물론 특정 API는 컴파일시 예외를 처리하지 않으면 컴파일이 되지 않는
* 예외들도 있습니다.
*
* 예외의 정의
* 실행시에 발생할 수 있는 모든 에러 상황으로 알아두세요.
*
* 예외가 발생되는 순서
*
* 컴파일 ->실행 ->실행중 예외 발생 -> VM이 발생된 예외의 종류/내용 파악 ->
* 예외객체를 생성 -> 발생된 코드 밖으로 외예 객체를 던짐(throw)->
* 예외의 콜 스택에 전이 -> main 메소드 밖까지 던지게 되면
* 프로그램 비정상 종료
*
* 위에서 보듯, 예외는 던지다라고 표현합니다.
* 또한 예외는 객체이기 때문에 당여한 클래스로 정의되어 있습니다.
*
* 예외의 최고 클래스는 lang 패키지에 Throwable입니다.
* 자식으로는 Error와 Exception이 있습니다.
* Error의 하위 타입은 일반적으로 JAVA 실행기 즉, JVM에 관련된 에러 상황을
* 정의한 클래스 입니다.
* 이런 문제(상황)들은 프로그래머가 처리할 수 없는 것들로 VM, JRE의 전체
* 문제이기도 합니다.
* 따라서 프로그래머는 Error의 하위 타입의 예외들(에러)은
* 처리하지 않고 무시합니다.
* (처리할 수도 없습니다)
*
* Execption이란 클래스의 하위타입이 바로 프로그래머가 처리할 예외타입입니다.
* 그렇기에 예외다 하고 표현할 때 최고 클래스로는 Exception클래스를 말합니다.
* Throwable 클래스는 자식으로 Error를 가지고 있기 때문에
* 예외의 최고 클래스라고 이야기 하지 않습니다.
*
* 예외의 종류
*
* 크게 두가지로 나눌 수 있습니다.
* 컴파일러가 관여하지 않으면서 실행시에 예외가 발생할 수 있는 예외
* ----> 알려지지 않은 예외(Unchecked Exception)
*
* 컴파일러가 관여하는 예외
* ----> 알려진 예외(Checked Exception)으로 구분합니다.
*
* 구분 방법은 Exception의 하위 클래스 중 RuntimeException이 있는데
* 해당 클래스의 자식 클래스들은 모두 알려지지 않은 예외입니다.
* 나머지는 알려진 예외입니다.
*
*/
public class Exception01 {
public static void main(String[] args) {
System.out.println("프로그램 시작");
System.out.println("중간 로직");
int num = 10;
int num2 = 0;
try {
System.out.println(num/num2);
//예외가 발생할 것 같은 문장;
} catch (Exception e) {//최상위 익셉셕
//혹시 예외가 발생했다면 처리할 문장;
System.out.println("예외가 발생했습니다.");
}
int arr[] = new int[] {10,20,30};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
try {
System.out.println(arr[2]);
System.out.println("패스");
System.out.println(10/0);//배열 관련된 내용이 아니기때문에 아래 catch로는 처리를 못한다.
} catch (ArrayIndexOutOfBoundsException e) {
//배열 길이 밖으로 나가는 익셉셕 처리
System.out.println("배열 길이 밖으로 나갔어요");
} catch (ArithmeticException e) {
System.out.println("0으로 나누고 있어요!");
}
System.out.println("프로그램 끝");
}
}
프로그램 시작
중간 로직
예외가 발생했습니다.
10
20
30
30
패스
0으로 나누고 있어요!
프로그램 끝
'2023.11.21-2024.05.31' 카테고리의 다른 글
231226 JAVA Exception03 (0) | 2023.12.26 |
---|---|
231226 JAVA Exception02 (0) | 2023.12.26 |
231226 JAVA Study (0) | 2023.12.26 |
231221 JAVA Test02 (1) | 2023.12.26 |
231221 JAVA Test02 (0) | 2023.12.26 |