[JAVA] 정리/클래스(Class)_타입(Type)

클래스_예외처리(Exception)

쎈코 2023. 2. 23. 01:35

ublic class Ex72_Exception {
public static void main(String[] args) {
//Ex72_Exception.java

예외, Exception
- 런타임 오류
- 개발자가 미리 예측이 가능한 것, 불가능한 것이 있음

예외 처리, Exception Handling
1. 전통적인 방식
- 제어문 사용(조건문)

2. 전용 방식
- try 문

 

 

try 문
- try
- catch
- finally

try {                              //조건이 없음 어떻게 분별해서 에러를 가려낼건지?
                                    //-> 위에서부터 쭉 실행하다가 통과되면 그대로 출력
                                    //에러가 나는 순간 프로그램 all 스톱 -> 프로그램 안멈추고 catch로 넘김
                                   //에러에 대한 후처리는 catch절에서 해결
                                   //에러가 나는 사실은 변함이 없는데 에러가 난 후 상황이 달라짐

=> try 구문 중 에러 발생시 프로그램 중단없이 catch로 예외처리 후 나머지 코드 계속 이어감

 

     - 비즈니스 코드(= 업무 코드)

     System.out.printf("100 / %d = %d\n", num, 100 / num);

 

} catch(Exception e) {
     - 예외 처리 코드
     System.out.println("0을 입력하면 안됩니다.");
}
System.out.println("종료");

 

 

case 1.

int num = 0; //사용자 입력

try {
     System.out.println(100 / num);                   //100 / num인데 0으로 나눌 수 없음
} catch(Exception e) {
     System.out.println("0으로 나누기");
}

 

case 2.
int[] nums = {10, 20, 30};


try {
     System.out.println(nums[5]);                          //배열은 3갠데 5번을 호출하는 경우 에러
} catch(Exception e) {
     System.out.println("배열 첨자 오류");
}

 

 

다중 try-catch절

try {                                                       //catch 중 exception은 맨 뒤에 둬야 함. 뒤로 넘어갈 기회가 없기때문에 안됨
int num = 10;
      System.out.println(100 / num);  // 여기서 에러 난 순간 다 스킵하고 catch로 점프
                                                        //여기서 에러나면 throw new ArithmeticException() 생성

 

int[] nums = {10, 20, 30};                 //여기서 에러나면 throw new ArrayIndexOutOfBoundsException
       System.out.println(nums[0]);

Calendar now = null;                        //여기서 에러나면 throw new NullPointerException
       System.out.println(now.get(Calendar.HOUR_OF_DAY));

} catch(ArithmeticException e) { //0으로 틀렸을 때
       System.out.println("0으로 나누기");
} catch (ArrayIndexOutOfBoundsException e) { //배열로 틀렸을때
       System.out.println("방번호 틀림");
} catch (NullPointerException e) { //null로 틀렸을때
       System.out.println("널참조");
} catch (Exception e) {
       System.out.println("예외 처리");
}

//틀렸을때 제자리 잘 찾아감