java에서 예외 발생시 프로그램 실행 시
- 오류난 구문 아래로 실행 안 됨
- 아래 화면 뜸
try ~ catch ~ finally 구문을 통해 예외 상황에 대응가능
- try의 구문이 오류나면
- catch에 설정해둔 메서드 실행
- finally는 오류가 나도 안나도 실행
try{
// 기본적으로 실행되는 부분
} catch( 예외클래스이름 객체이름 ){
// try 블록에서 예외가 발생한 경우
// 이곳으로 제어가 넘어옴
} finally {
// 예외 발생 여부에 상관없이 무조건 실행
// 생략 가능
}
try {
String year2 = "나이";
int age2 = 2023 - Integer.parseInt(year2);
System.out.println(age2);
} catch ( NumberFormatException e ) { // 넘버 포맷 예외가 발생했을 때 예외에 대한 정보를 갖고 있는 파라미터 e
System.out.println("에러가 발생했습니다.");
} finally {
System.out.println("----프로그램 종료----");
}
e.printStackTrace();
- 실제 예외 상황시에 출력되는 메시지를 강제로 catch에서 출력
- 개발자가 예외상황을 분석하기 위한 용도로 사용
e.getMessage()
- 간략한 에러 메시지를 리턴한다.
String[] src = {"8", "7", "다"} ;
//src의 내용들을 숫자로 변환해서 저장할 배열
int[] arr = new int[3];
try {
for( int i = 0; i<src.length; i++) {
arr[i] = Integer.parseInt(src[i]);
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("데이터가 너무 많습니다.");
} catch (Exception e) {
System.out.println("알 수 없는 예외가 발생했습니다.");
} finally {
System.out.println("--데이터 변환 종료--");
}
System.out.println("-----프로그램 종료합니다-----");
// catch 구문으로 배열에 관한 예외만 두었기 때문에
// 문자열에 대한 예외 못 잡음