e.getMessage(): 발생한 예외에 대한 간략한 메시지를 반환합니다.
e.printStackTrace(): 예외 발생 시의 호출 스택을 출력하여 디버깅에 도움을 줍니다. 주로 개발자가 예외의 원인을 분석할 때 사용합니다.
예외 코드1)
package work0725_exception;
public class Main05 {
public static void main(String[] args) {
// 문자열 배열 src를 정의합니다. 일부 값은 정수로 변환할 수 없습니다.
String[] src = {"2", "3", "3", "가"};
// 정수 배열 arr를 정의합니다. 길이는 3입니다.
int[] arr = new int[3];
try {
// src 배열의 각 요소를 정수로 변환하고 arr 배열에 저장합니다.
for (int i = 0; i < src.length; i++) {
// 문자열을 정수로 변환합니다.
arr[i] = Integer.parseInt(src[i]);
// 변환된 정수를 출력합니다.
System.out.println(arr[i]);
}
}
// NumberFormatException: 문자열을 정수로 변환할 수 없을 때 발생합니다.
catch (NumberFormatException e) {
e.printStackTrace(); // 예외의 스택 트레이스를 출력합니다.
System.out.println("문자열을 숫자로 바꾸는데 오류 발생");
}
// ArrayIndexOutOfBoundsException: 배열의 인덱스가 범위를 벗어날 때 발생합니다.
catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace(); // 예외의 스택 트레이스를 출력합니다.
System.out.println("배열 오류 발생");
}
// Exception: 위의 두 가지 예외 외의 모든 예외를 처리합니다.
catch (Exception e) {
e.printStackTrace(); // 예외의 스택 트레이스를 출력합니다.
System.out.println("알 수 없는 예외가 발생");
}
// finally: 예외 발생 여부와 관계없이 항상 실행됩니다.
finally {
System.out.println("데이터 변환 종료");
}
// try-catch-finally 블록 후에 출력됩니다.
System.out.println("프로그램 종료");
}
}
설명)