What is Custom Exception in JAVA ?

What is Custom Exception in JAVA ?

In Java, there are two types of exceptions – checked and unchecked exception. Here’s the summary :

Checked – Extends java.lang.Exception, for recoverable condition, try-catch the exception explicitly, compile error.
Unchecked – Extends java.lang.RuntimeException, for unrecoverable condition, like programming errors, no need try-catch, runtime error.

Custom Checked Exception

Some popular checked exception : IOException, FileNotFoundException
1.1 If the client is able to recover from the exception, make it a checked exception. To create a custom checked exception, extends java.lang.Exception

Also Read : How to change date format in a String in JAVA

If you are creating your own Exception that is known as custom exception or user-defined exception. Java custom exceptions are used to customize the exception according to user need.

By the help of custom exception, you can have your own exception and message.

Let’s see a simple example of java custom exception.

NameNotFoundException.java

package com.mycodetips.examples.exception;

public class NameNotFoundException extends Exception {

public NameNotFoundException(String message) {
super(message);
}

}

1.2 For checked exception, you need to try and catch the exception.

CustomerService.java

package com.mycodetips.examples;

import com.mycodetips.examples.exception.NameNotFoundException;

public class CustomerService {

public Customer findByName(String name) throws NameNotFoundException {

if ("".equals(name)) {
throw new NameNotFoundException("Name is empty!");
}

return new Customer(name);

}

public static void main(String[] args) {

CustomerService obj = new CustomerService();

try {

Customer cus = obj.findByName("");

} catch (NameNotFoundException e) {
e.printStackTrace();
}

}
}

Output

com.mycodetips.examples.exception.NameNotFoundException: Name is empty!
at com.mycodetips.examples.CustomerService.findByName(CustomerService.java:10)
at com.mycodetips.examples.CustomerService.main(CustomerService.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

Custom Unchecked Exception

Some popular unchecked exception : NullPointerException, IndexOutOfBoundsException, IllegalArgumentException
2.1 If the client cannot do anything to recover from the exception, make it an unchecked exception. To create a custom unchecked exception, extends java.lang.RuntimeException

ListTooLargeException.java

package com.mycodetips.examples.exception;

public class ListTooLargeException extends RuntimeException{

public ListTooLargeException(String message) {
super(message);
}

}

2.3 For unchecked exception, try and catch the exception is optional.

CustomerService.java

package com.mycodetips.examples;

import com.mycodetips.examples.exception.ListTooLargeException;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CustomerService {

public void analyze(List data) {

if (data.size() > 50) {
//runtime exception
throw new ListTooLargeException("List can't exceed 50 items!");
}

//...
}

public static void main(String[] args) {

CustomerService obj = new CustomerService();

//create 100 size
List data = new ArrayList<>(Collections.nCopies(100, "mycodetips"));

obj.analyze(data);


}
}

Output

Exception in thread "main" com.mycodetips.examples.exception.ListTooLargeException: List can't exceed 50 items!
at com.mycodetips.examples.CustomerService.analyze(CustomerService.java:25)
at com.mycodetips.examples.CustomerService.main(CustomerService.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

Custom exceptions are very much useful when we need to handle specific exceptions related to the business logic. When used properly, they can serve as a useful tool for better exception handling and logging.


Discover more from mycodetips

Subscribe to get the latest posts sent to your email.

Discover more from mycodetips

Subscribe now to keep reading and get access to the full archive.

Continue reading

Scroll to Top