인프런 커뮤니티 질문&답변

인프린님의 프로필 이미지
인프린

작성한 질문수

김영한의 실전 자바 - 중급 1편

자바 예외 처리4 - 언체크 예외

예외 처리 질문

작성

·

199

0

안녕하세요.

예외 처리 질문드립니다.

checked exception을 잡을 때 catch 블럭에서 임의로 발생시킨 MyCheckedException이 아닌 RuntimeException을 잡으려고 하면 여기서 예외 처리를 못하니 throws로 예외를 다시 던져줘서 코드가 에러가 없었는데,

unchecked exception을 잡을 때 똑같이 catch 블럭에서 발생된 MyUncheckedException이 아닌 다른 예외를 catch로 선언하고 나서 못 잡을 경우 밖으로 예외를 던지나 보려고 했는데 catch 에서 MyUncheckedException이 아닌 예외 중 어떤 건 에러가 안 나고 어떤 건 에러가 납니다.

예를 들어 NullPointerExceptoin으로 잡으려고 하면 코드에 이상이 없고, MyCheckedException으로 잡으려고 하면 에러가 발생합니다. 어차피 둘 다 catch 블럭에서 처리할 수 없어서 밖으로 던질텐데 왜 이런 걸까요 ?

public void callCatch(){
    try{
        client.call();
    }catch(NullPointerException e){
        System.out.println("예외처리, message = " + e.getMessage());
    }
    System.out.println("정상 흐름");
}
public void callCatch(){
    try{
        client.call();
    }catch(MyCheckedException e){
        System.out.println("예외처리, message = " + e.getMessage());
    }
    System.out.println("정상 흐름");
}

java: exception exception.basic.checked.MyCheckedException is never thrown in body of corresponding try statement

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 인프린님

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

 

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

인프린님의 질문에 대한 해결책을 제시하는데 도움이 될 만한 유사한 컨텍스트의 정보를 찾았습니다. 이는 예외 처리의 기본 원리와, 특히 java에서의 checked exception과 unchecked exception의 처리 방법에 대한 이해를 돕기 위한 것입니다.

질문하신 내용과 밀접하게 연관된 내용은 아래의 링크에서 찾아볼 수 있습니다:

  • 체크예외와 런타임예외의 차이점

    이 질의응답에서는 체크 예외와 런타임 예외(언체크 예외)의 기본적인 차이점과 그 사용 사례에 대해 설명하고 있습니다. 자바의 예외 처리 메커니즘에서, 체크 예외는 반드시 예외 처리 코드를 구현해주어야 하는 반면, 런타임 예외는 개발자의 선택에 따라 처리 코드를 작성할 수 있음을 설명하고 있습니다. 질문하신 내용에서 언급된 현상은 체크 예외와 런타임 예외 사이의 이러한 기본적인 차이 때문에 발생합니다. 체크 예외는 try 블록 내에서 발생 가능한 예외로 명시적으로 선언되어야 하고, 그렇지 않으면 컴파일 에러가 발생합니다. 반면, 런타임 예외는 명시적으로 선언하지 않아도 처리할 수 있으므로, NullPointerException과 같은 예외는 catch 블록에서 자유롭게 처리할 수 있습니다.

    자세한 내용은 위 링크를 참조하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

인프린님의 프로필 이미지
인프린

작성한 질문수

질문하기