해결된 질문
24.07.26 22:21 작성
·
83
0
Java에서 일부러 에러 발생시킬 때, throw를 사용한다고 하셨는데 이게 무슨 말인지 이해가 되지 않습니다..
public class ThrowExample1 {
public static void main(String[] args) {
try {
checkAge(15); // 이 줄에서 예외가 발생합니다.
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
public static void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("나이는 18세 이상이어야 합니다.");
}
System.out.println("나이가 적합합니다.");
}
}
여기에서 이 부분이 이해되지 않습니다.
throw new IllegalArgumentException("나이는 18세 이상이어야 합니다.");
catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
답변 2
0
2024. 07. 26. 23:31
IllegalArgumentException는 자바가 가지고 있는 에러명 중에 하나입니다.
절대로 암기하실 필요 없습니다.
저건 그저 수많은 Java 언어 제작자가 미리 정의해둔 에러 중 하나입니다.
(에러 리스트 참고: https://programming.guide/java/list-of-java-exceptions.html)
Java가 가지고 있는 에러 중에 하나를 골라서 발생시킨 것이고요.
그 에러에 해당되는 catch문에 들어가서 에러를 e라는 변수로 받아서 사용하는 것입니다.
e 안의 메시지는 제가 입력한 "나이는 18세 이상이어야 합니다." 이게 있을 겁니다.
어쨌든 저기에 에러명이 뭐라고 나오든 간에, catch문에 있는 저 에러명하고 똑같은 곳에 가셔서 출력문 그대로 쓰시면 됩니다.
에러명 그 자체는 절대 시험에 나올 일이 없습니다.
중요한 것은 try, catch, throw 이렇게 3개입니다.
예제 문제)
try 안에 어떤 줄에서는 abc라는 에러가 발생한다. 이 다음에 실행될 구문은?
-> 정답: catch 안에 abc라는 에러가 명시되어있는 블록 실행
혹시 시간 여유가 되시면 수강평 한 줄 부탁드립니다... 😃
0
안녕하세요, 인프런 AI 인턴입니다.
pmrim01님께서 질문해주신 Java의 throw
키워드와 관련하여 예외를 일부러 발생시키는 방법에 대해서는, 여러분이 제시한 코드에서 throw new IllegalArgumentException("나이는 18세 이상이어야 합니다.");
부분이 그것을 철저히 반영하고 있습니다. 여기에서 throw
키워드는 개발자가 의도적으로 예외를 발생시키기 위해 사용됩니다. 특정한 조건(여기서는 나이가 18세 미만일 때) 하에서 프로그램의 정상적인 흐름을 중단하고 예외를 발생시키고자 할 때 사용됩니다.
예외 처리를 위해 try {...}
블록 안에서 checkAge(15);
메소드를 호출하게 되면, 이 메소드 내부의 조건문이 참이 됨에 따라 IllegalArgumentException
이 발생합니다. 그리고 catch (IllegalArgumentException e) {...}
블록으로 이동하여, 발생한 예외에 대한 처리를 합니다. 여기서는 예외가 발생했음을 사용자에게 알리기 위해 예외 메시지(e.getMessage()
)를 출력합니다.
이러한 방식은, 프로그램에서 개발자가 정의한 규칙이나 조건을 위반하는 경우 명시적으로 예외를 발생시켜, 오류의 원인을 쉽게 파악하고 대응할 수 있도록 돕습니다.
질문하신 ‘throw’에 대해서 유사한 설명을 담은 try-catch에서 예외를 일부러 발생시키는 상황 에 대한 답변을 찾았습니다. 이 답변에서도 throw
를 사용하여 예외를 발생시키는 상황과 예외 처리 블록을 넘어가는 흐름에 대해 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.