Daily coding

Java Basic : day 7 - Exception 예외처리1 본문

Language/Java_basic

Java Basic : day 7 - Exception 예외처리1

sunnnkim 2019. 11. 26. 18:36

 Exception :

예외 != 에러 (개발자가 유지 보수하기 위함)
  - 예외가 발생해도 프로그램 멈추지 않고 동작하지만 
      문제가 발생한 경우에 막아주기 위한 용도로 사용
  - 문제의 발생과 뒤처리가 목적  
   
예시  (가장 대표적인 예외들)
  1. 숫자입력에   1 2 3 (O) , 'A' --> ? (예외 발생)
  => NumberFormatException : 숫자 입력에 문자가 들어왔을 때 / 반대의 경우 등
 
  2. 배열에 할당된 범위를 벗어나서 데이터를 저장하려고 할 때 
  int arr[] = new int[3];
  arr[3] = 1;  // 예외발생
  => ArrayIndexOutOfBoundsException
 
  3. 자바에서 API를 import하지 않았을 때
  Scanner sc = new Scanner(System.in);
  // import하지 않고 사용
  => ClassNotFoundException
 
  4. file을 불러 왔으나 없는 경우
  => FileNotFoundException
 
 
  * 예외처리 방법 try-catch
  try{
 
          // 예외가 발생할 가능성이 있는 소스코드 
   
  }catch(NumberFormatException e) { <--- 예외는  여러 종류별로 처리가 가능하지만
 
          // 예외가 발생한 후 처리
   
  }catch(Exception e) { <--- Exception은 가장 넓은 범위이기 때문에 작은 범위의 예외부터 처리하도록 한다.
 
           // 예외가 발생한 후 처리
   
  }

   finally { <--- 예외확인과 예외처리 이후 뒤처리 

                    (파일 닫기나 DB관련하여 예외처리 후

                    심각한 손상 가능성이 있는 저장매체를 닫아주고 원상복구해준다.)  
 
           // 무조건 실행되는 코드 ( 뒤처리 )
            // 예를 들면
           파일close;
           DB 원상복구 -> rollback / undo
  }
 
 
 

int num[] = { 11, 22, 33 };

          System.out.println("프로그램 시작 ");

try {
// 예외 발생 코드임 
          for (int i = 0; i < 4; i++) {
          System.out.println(num[i]);
          }
          System.out.println("배열 출력 완료 ");
} catch (ArrayIndexOutOfBoundsException e) {
          // 주로 아래 세가지 방법을 사용해 예외 메세지를 출력 
          System.out.println("배열 범위 초과 ");
          //e.printStackTrace();
          //System.out.println(e.getMessage());
          return;
}finally { // 무조건 실행되는 영역

          // 원상복구(+뒤처리)하기 위한 코드 
          // catch문에서 return으로 빠져나가도 실행됨.
          System.out.println("finally 무조건 실행됨.");
}

System.out.println("프로그램 끝 ");
// 예외가 생기면 위의 문장은 출력되지 않음
// 이유 : catch문에서 예외발생시 return(main 메소드 종료)했기 때문 

}
}