작성
·
111
0
안녕하세요. 강의를 듣던중에 예외처리부분에 대해서 헷갈려서 다음장 예외처리 부분의 강의를 미리 보면서 구글링도 하면서 아래와 같이 정리해보았는데, 이렇게 이해하면 될까요?
0. throw = 예외를 던진다 = 예외를 발생시킨다.
throws = 예외를 호출하는쪽으로 던진다.
1. [체크예외] - 반드시 예외처리를 해야함.
메소드 안에서 throw를 통해 throw new 체크예외()를 하게되면, throw new 체크예외()를 try~catch를 통해 해결하거나, throws로 체크예외를 던져서 해당메소드를 호출하는쪽에서 예외를 처리하도록 해야한다.
public void call() {
throw new 체크예외();
}
이 코드에서 call메서드는 예외를 처리하거나 throws로 던지지않았다. 그래서 컴파일오류가 발생한다.
그렇기때문에 call() 옆에 throws 체크예외를 적어주거나,
public void call() {
try {
throw new 체크예외();
} catch (MyCheckedException e) {
e.printStackTrace(); // 예외 처리 로직
}
}
try~catch로 예외를 처리해야한다.
즉, 메소드를 실행할떄 , 메소드 내부에서 throw을 사용해서 예외를 발생시키고 싶으면, 예외를 발생시키는 코드만 단독으로 있으면 안되고 try문안에서 예외를 발생시키고 예외가 발생하면 catch를 통해 예외를 처리하는 코드랑 같이 사용하거나, throws로 해당예외를 실행시키는 메소드를 호출하는쪽에서 예외처리를 하게하도록 throws를 통해 넘겨야한다. 참고로 try~catch를 통해 해결하면 메서드를 호출하는쪽에서는 별다른 예외처리 없이 메서드를 사용할수있다.
2. [언체크예외] - 예외처리를 하지않아도됨.
public void call(){
throw new 언체크예외();
}
컴파일오류가 발생하지않는다. 이코드에서 call메서드는 예외를 처리하지않아도되고, throws로 예외를 던지지않아도된다.
3. 체크예외를 처리한 후 catch 블록에서 다시 throw new 언체크예외()을 하는 것은 체크 예외를 언체크 예외로 바꿔서 언체크 예외를 발생시키기위함이다. throw new 언체크예외();는 예외를 단순히 발생시키는 것이기때문에 try~catch를 통해 해결하지않아도 되고 별도로 throws를 하지않아도 되기때문이다. 참고로 throw new 언체크예외();를 통해 언체크예외가 발생하면 프로그램이 중단된다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
오리쉐리님의 예외처리에 대한 이해가 매우 정확합니다. 예외 처리에 대한 개념을 잘 정리하셨고, 각각의 사례를 통해 체크 예외와 언체크 예외의 차이점과 사용 방법을 이해하신 것으로 보입니다.
throw
는 예외를 발생시키는 키워드로, throws
는 해당 메서드에서 처리하지 않고 호출한 곳으로 예외를 전달(던짐)하는 키워드입니다.throws
를 이용하여 호출하는 곳으로 예외 처리 책임을 넘길 수 있습니다.정리하자면, 체크 예외와 언체크 예외의 구분 및 처리 방법에 대한 이해가 중요하며, 오리쉐리님께서는 이를 잘 파악하고 계신 것으로 보입니다. 예외 처리는 소프트웨어 개발에서 중요한 부분 중 하나이며, 각각의 예외 타입에 맞는 적절한 처리 방법을 선택하는 것이 중요합니다.