문제
다음 Java 코드의 출력 결과로 가장 적절한 것은?
Javapublic class Main { public static void main(String[] args) { int a = 5, b = 0; try { System.out.print(a / b); } catch (ArithmeticException e) { System.out.print("출력1"); } catch (ArrayIndexOutOfBoundsException e) { System.out.print("출력2"); } catch (NumberFormatException e) { System.out.print("출력3"); } catch (Exception e) { System.out.print("출력4"); } finally { System.out.print("출력5"); } } }
① 출력1출력5 ② 출력2출력5 ③ 출력4출력5 ④ 출력5
정답
1번
해설
정답: 1. 5를 0으로 나누면 ArithmeticException이 발생하여 첫 번째 catch가 실행되고, finally 블록도 실행된다.
오답 풀이
- 1번: ArithmeticException 처리 후 finally가 실행되므로 정답이다.
- 2번: 배열 인덱스 예외가 발생하지 않는다.
- 3번: ArithmeticException이 먼저 매칭되므로 Exception catch까지 가지 않는다.
- 4번: catch 블록 출력이 누락되었다.
보충 개념 Java에서 finally 블록은 예외 발생 여부와 관계없이 일반적으로 실행된다. 여러 catch가 있을 때는 위에서부터 타입이 맞는 catch가 실행된다.