예외처리는 프로그램 실행 중 발생할 수 있는 오류 상황에 적절히 대응하여 프로그램이 비정상 종료되지 않도록 도와주는 기술입니다.
💡 비유: 예외처리는 자동차의 에어백처럼, 사고(오류)가 나더라도 프로그램을 안전하게 보호해 줍니다.
try {
// 예외 가능성이 있는 코드
} catch (예외타입 변수명) {
// 예외 발생 시 실행될 코드
}
Scanner scanner = new Scanner(System.in);
String[] greetings = {"안녕하세요.", "반갑습니다.", "또 오세요."};
while (true) {
try {
System.out.print("0 이상 " + greetings.length + " 미만의 정수를 입력하세요 (99는 종료): ");
if (scanner.hasNextInt()) {
int index = scanner.nextInt();
if (index == 99) break;
System.out.println(greetings[index]);
} else {
System.out.println("정수를 입력하세요.");
scanner.next(); // 잘못된 입력 제거
}
} catch (Exception e) {
System.out.println("⚠ 예외 발생: " + e.getMessage());
}
}
finally는 예외 발생 여부와 관계없이 항상 실행되는 블록입니다.
try {
// 예외 가능 코드
} catch (Exception e) {
System.out.println("예외 발생");
} finally {
System.out.println("항상 실행됩니다");
}
try {
int result = divide(a, b);
} catch (ArithmeticException ae) {
System.out.println("0으로 나누는 오류");
} catch (Exception e) {
System.out.println("기타 예외");
}
catch (NullPointerException | IOException e) {
System.out.println("예외 처리");
}
🔑 멀티 캐치는 서로 관련 없는 예외를 하나의 처리 블록으로 묶을 때 유용합니다.