unchecked Exception과는 달리, checked Exception인 경우 부모 클래스에서 예외를 던졌을 때 자식 클래스에서 같은 예외나 하위 예외를 던질 수 있다.
만약 아무것도 던져주지 않았을 경우 자식 클래스는 어떠한 체크 예외도 던질 수 없다. 물론 unchecked Exception은 상관없다.
대표적인 예로는 Runnable의 run() 메서드가 있다.
run() 안에서 sleep()을 사용할 경우 InterruptedExepction을 처리해줘야 하는데 부모인 Runnable에서 아무런 체크 예외를 던지지 않았으므로 run()에서는 throw로 처리할 수는 없다.
그래서 try-catch 구문으로 잡아줘야 한다.
따라서 @Override 어노테이션이 있을 경우에는 부모에 예외 처리가 어떻게 되었는지 확인할 필요가 있다.