해결된 질문
작성
·
36
0
publicclassArithmeticExceptionExample { publicstaticvoidmain(String[] args) {
try {
intresult = 10 / 0; // 여기서 ArithmeticException 발생
} catch(AritheticException e) {
System.out.println("에러: 0으로 나눌 수 없습니다!");
}catch (Exception e) { System.out.println("에러 발생"); }
finally { System.out.println("이 블록은 항상 실행됩니다!");
}
질문
25년 1회시험에 이런방식의 문제가 출체되었는데,, "에러발생" 출력이되어야 하나요? 아니면 생략되어야 하나요?
답변 2
0
안녕하세요, 아래와 같은 코드는
public class ArithmeticExceptionExample {
public static void main(String[] args) {
try {
int result = 10 / 0; // 여기서 ArithmeticException 발생
System.out.println("결과: " + result); // (실제로는 실행되지 않음)
} catch (ArithmeticException e) { // ‼️ 클래스 이름 철자 수정
System.out.println("에러: 0으로 나눌 수 없습니다!");
} catch (Exception e) { // 그 밖의 모든 예외 대비
System.out.println("에러 발생");
} finally {
System.out.println("이 블록은 항상 실행됩니다!");
}
}
}
이렇게 출력됩니다.
에러: 0으로 나눌 수 없습니다!
이 블록은 항상 실행됩니다!
이미 위에서 catch 된 것은 오류발생에 걸리지 않습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김광선님.
질문하신 내용은 try-catch-finally
블록에서 발생하는 예외 처리에 관한 내용입니다.
주어진 코드에서는 int result = 10 / 0;
문장에서 ArithmeticException
이 발생합니다. 코드의 실행 흐름은 해당 예외를 처리하기 위해 가장 먼저 매치되는 catch
블록으로 이동합니다.
여기서 중요한 점은, 코드를 보면 catch(AritheticException e)
로 오타가 있는 부분이 있어 ArithmeticException
이 제대로 잡히지 않고 다음 catch(Exception e)
블록으로 넘어가게 됩니다. 따라서 “에러 발생”이 출력됩니다.
만약 오타가 수정되어 catch(ArithmeticException e)
가 올바르게 작성되었다면, “에러: 0으로 나눌 수 없습니다!“가 출력되고 다음 catch
문은 실행되지 않습니다.
따라서, 질문에 대한 답변은 “에러발생”은 ArithmeticException
을 정확하게 잡지 못하기 때문에 출력되며, 마지막으로 finally
블록의 “이 블록은 항상 실행됩니다!“가 출력됩니다.
질문이 이해가 되셨길 바랍니다. 비슷한 주제에 대한 정보를 찾기 위해 아래 링크를 참고하세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.