Kubernate

Monday, November 10, 2025

0011.Java Unchecked Exceptions

 Java Unchecked Exceptions

Unchecked exceptions in Java are exceptions that are not checked at compile-time. These exceptions occur during the execution of the program and are typically caused by programming errors, such as logic errors or improper use of an API. Unchecked exceptions are subclasses of RuntimeException and do not need to be declared in a method’s throws clause.

Table of Contents

1.     What are Unchecked Exceptions?

2.     Difference Between Checked and Unchecked Exceptions

3.     Common Unchecked Exceptions

4.     Handling Unchecked Exceptions

5.     Creating Custom Unchecked Exceptions

6.     Best Practices for Using Unchecked Exceptions

7.     Real-World Analogy

8.     Example: Comprehensive Usage of Unchecked Exceptions

9.     Conclusion

1. What are Unchecked Exceptions?

Unchecked exceptions are exceptions that are not checked at compile-time. These exceptions typically indicate programming errors, such as invalid arguments passed to a method, null pointer dereferencing, or array index out of bounds. Unchecked exceptions extend the RuntimeException class.

2. Difference Between Checked and Unchecked Exceptions

Feature

Checked Exceptions

Unchecked Exceptions

Compile-time Check

Yes

No

Declaration Required

Yes

No

Subclass of

Exception

RuntimeException or Error

Typical Use

Conditions from which recovery is possible

Programming errors, such as logic errors

3. Common Unchecked Exceptions

Some common unchecked exceptions in Java include:

  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • IllegalArgumentException
  • IllegalStateException
  • ArithmeticException
  • ClassCastException

4. Handling Unchecked Exceptions

Unchecked exceptions can be handled using a try-catch block, similar to checked exceptions. However, they are not required to be declared or caught.

Example:

public class HandleUncheckedException {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[5]); // This will throw ArrayIndexOutOfBoundsException
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Exception caught: Array index out of bounds.");
        }
    }
}

Output:

Exception caught: Array index out of bounds.

5. Creating Custom Unchecked Exceptions

Custom unchecked exceptions are created by extending the RuntimeException class.

Example:

public class InvalidAgeRuntimeException extends RuntimeException {
    public InvalidAgeRuntimeException(String message) {
        super(message);
    }
}
 
public class CustomUncheckedExceptionExample {
    public static void main(String[] args) {
        try {
            validateAge(15);
        } catch (InvalidAgeRuntimeException e) {
            System.out.println("Caught custom unchecked exception: " + e.getMessage());
        }
    }
 
    static void validateAge(int age) {
        if (age < 18) {
            throw new InvalidAgeRuntimeException("Age must be at least 18.");
        } else {
            System.out.println("Access granted.");
        }
    }
}

Output:

Caught custom unchecked exception: Age must be at least 18.

6. Best Practices for Using Unchecked Exceptions

1.     Use for Programming Errors: Use unchecked exceptions for programming errors that cannot be reasonably recovered from at runtime.

2.     Provide Meaningful Messages: Provide detailed and specific error messages.

3.     Avoid Overuse: Do not overuse unchecked exceptions; use them only when it is appropriate.

4.     Document Exception Handling: Document where and why unchecked exceptions might be thrown.

5.     Catch and Log: Catch and log unchecked exceptions to help with debugging and monitoring.

7. Real-World Analogy

Consider a scenario where you are writing an essay:

  • Unchecked Exception: Situations like misspelling a word or grammatical errors. These are programming errors that should be fixed by the writer.
  • Checked Exception: Situations like missing a deadline. These are conditions that need to be handled to proceed with the task.

8. Example: Comprehensive Usage of Unchecked Exceptions

Example:

public class ComprehensiveUncheckedExceptionExample {
    public static void main(String[] args) {
        try {
            processString(null);
        } catch (CustomNullPointerException | CustomIllegalArgumentException e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }
 
    static void processString(String str) {
        if (str == null) {
            throw new CustomNullPointerException("String cannot be null.");
        }
        if (str.isEmpty()) {
            throw new CustomIllegalArgumentException("String cannot be empty.");
        }
        System.out.println("Processing string: " + str);
    }
}
 
class CustomNullPointerException extends RuntimeException {
    public CustomNullPointerException(String message) {
        super(message);
    }
}
 
class CustomIllegalArgumentException extends RuntimeException {
    public CustomIllegalArgumentException(String message) {
        super(message);
    }
}

Output:

Exception caught: String cannot be null.

9. Conclusion

Unchecked exceptions in Java are exceptions that are not checked at compile-time. They are typically used for programming errors that cannot be reasonably recovered from at runtime. By understanding how to handle and create custom unchecked exceptions, you can write more robust and maintainable Java applications. Following best practices for using unchecked exceptions will help you handle errors effectively and make your code more readable and reliable.

 

No comments:

Post a Comment

Spring Boot - Bean LifeCycle

 Here is a clear, step-by-step lifecycle of a Spring Boot application , explained in a simple + interview-ready way. 🔄 Spring Boot Applica...

Kubernate