데브허브 | DEVHUB | Interview Q&A Weekend Series #3 🚀 | Tricky Use Case Exception Handling in Inheritance @JavatechieInterview Q&A Weekend Series #3 🚀 | Tricky Use Case Exception Handling in Inheritance @Javatechie
- 부모 메서드가 예외를 선언하더라도 자식 메서드는 해당 예외를 선언하거나 던지도록 강제되지 않습니다. 이는 다양한 자식 구현체에 유연성을 제공합니다. 🧘♀️
- 자식 메서드가 부모에 선언되지 않은 새로운 체크 예외(Checked Exception)를 던지려고 하면 컴파일 오류가 발생합니다. 이는 호출자가 부모 인터페이스를 통해 안전하게 예외를 처리할 수 있도록 보장하기 위함입니다. 🚫
- 자식 메서드가 부모에 선언되지 않은 언체크 예외(Unchecked Exception)를 던지는 것은 허용되며, 컴파일 오류가 발생하지 않습니다. 언체크 예외는 메서드 시그니처에 선언될 필요가 없습니다. 🚀
- 여러 구현 클래스가 있는 경우, 특정 체크 예외를 모든 구현체에 강제하지 않기 위해 구현 클래스에서 언체크 예외를 던지는 것이 권장됩니다. 💡
- 자바의 예외 계약(Exception Contract)은 상속 관계에서 부모-자식 간의 예외 처리 규칙을 정의하며, 특히 체크 예외에 대해 엄격한 컴파일 타임 검사를 적용합니다. 📜
- 체크 예외는
Exception을 상속하고 컴파일 시점에 확인되며, 언체크 예외는 RuntimeException을 상속하고 런타임 시점에 발생합니다. 🧐