java-squid/effective-java

[아이템 70] 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라

Closed this issue · 6 comments

[아이템 70] 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라

검사 예외란 단어는 정확히 무엇을 의미하는 걸까요?
-> 아 checked exception을 번역한 게 검사 예외 인것 같네요..

예외에 대해 한번 훝어보기 좋은 포스팅 : https://sjh836.tistory.com/122

p391 Exception, RuntimeException, Error를 상속하지 않는 throwable을 만들 수 있다..

어떤 걸 의미하는 걸까요?
최상위 클래스(throwable)만 받아서, 자신만의 예외를 만들어내는 것을 의미하는 걸까요?

p391 Exception, RuntimeException, Error를 상속하지 않는 throwable을 만들 수 있다..

어떤 걸 의미하는 걸까요?
최상위 클래스(throwable)만 받아서, 자신만의 예외를 만들어내는 것을 의미하는 걸까요?

제 생각에는 아마 그렇게 생각되는데, 혹시 어떤 의미인가요??
아래 방식과 같이 사용하는것이 아닐까요?

public class Example extends Throwable{

    public Example() {
        super("Throwable");
    }
}

public class ee {

    public void go() throws Example {
        throw new Example();
    }
}

public class Main {

    public static void main(String[] args) {
        ee e = new ee();
        try {
            e.go();
        }catch (Example tr){
            tr.getMessage();
        }
    }
}

검사 예외란 단어는 정확히 무엇을 의미하는 걸까요?
-> 아 checked exception을 번역한 게 검사 예외 인것 같네요..

원어로된 책을 찾아봤는데, checked exception 를 검사 예외라는 한국말로 번역한게 맞더라고요.

checed-exception

p391 Exception, RuntimeException, Error를 상속하지 않는 throwable을 만들 수 있다..

어떤 걸 의미하는 걸까요?
최상위 클래스(throwable)만 받아서, 자신만의 예외를 만들어내는 것을 의미하는 걸까요?

저도 동일한 의미로 이해했습니다. 그리고 extends Throwable 을 절대로 하지 말라는 의미로 책을 읽었습니다.
실제로 사용을 해보니, 그냥 extends Throwable 을 하기만 해도, try/catch 구문을 강제하더군요.
그렇다하더라도, 구체적인 하위 Checked Exception 클래스를 찾아내어서 에러를 발생시키도록 하라고 이해했습니다.