- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What are the rules need to follow when overriding a method that throws an exception in Java?
We need to follow some rules when we overriding a method that throws an Exception.
- When the parent class method doesn’t throw any exceptions, the child class method can’t throw any checked exception, but it may throw any unchecked exceptions.
class Parent { void doSomething() { // ... } } class Child extends Parent { void doSomething() throws IllegalArgumentException { // ... } }
- When the parent class method throws one or more checked exceptions, the child class method can throw any unchecked exception.
class Parent { void doSomething() throws IOException, ParseException { // ... } void doSomethingElse() throws IOException { // ... } } class Child extends Parent { void doSomething() throws IOException { // ... } void doSomethingElse() throws FileNotFoundException, EOFException { // ... } }
- When the parent class method has a throws clause with an unchecked exception, the child class method can throw none or any number of unchecked exceptions, even though they are not related.
class Parent { void doSomething() throws IllegalArgumentException { // ... } } class Child extends Parent { void doSomething() throws ArithmeticException, BufferOverflowException { // ... } }
Example
import java.io.*; class SuperClassTest{ public void test() throws IOException { System.out.println("SuperClassTest.test() method"); } } class SubClassTest extends SuperClassTest { public void test() { System.out.println("SubClassTest.test() method"); } } public class OverridingExceptionTest { public static void main(String[] args) { SuperClassTest sct = new SubClassTest(); try { sct.test(); } catch(IOException ioe) { ioe.printStackTrace(); } } }
Output
SubClassTest.test() method
Advertisements