throw
하는가?FileInputStream
에서는 FileNotFoundException
도 발생할 수 있고 SecurityException
도 발생할 수 있다. SecurityException
은 checked exception이니까 throw하지 않는 것이 자연스럽지만, FileNotFoundException
은 왜 throw하는 걸까?
내부적으로 예외를 처리해버리면 프로그래머 입장에서는 예외가 발생한 건지조차 알 수 없다. 이상하게 돌아가도 왜 그런 건지 알 수가 없다는 의미다.
따라서 예외에 대한 계획도 할 수 없다.
즉 예외를 throw
하는 이유는 API를 사용하는 개발자가 상황을 인지하고 각자의 상황에 맞게 유연한 예외처리를 할 수 있도록 하기 위함이다.
throw
하는 예외의 상위 예외를 throw
할 수 없다.Parent
에서 IOException
을 throw
하는 method를 Child
에서 재정의할 때 Exception
을 throw
하도록 할 수 없다.throw
해야 한다.public interface InterfaceA {
int search(int val) throws RuntimeException;
}
search
메소드를 구현할 때 RuntimeException
의 모든 하위 예외를 throw
할 수 있다.RuntimeException
의 하위 예외기만 하면 여러 개의 예외를 throw
해도 상관없다.