Exemples d'exceptions personnalisées Java

En Java, il existe deux types d'exceptions - exception cochée et non cochée. Voici le résumé:
-
Checked - Etend
java.lang.Exception, pour une condition récupérable, essayez de capturer l'exception explicitement, l'erreur de compilation. -
Unchecked - Etend
java.lang.RuntimeException, pour les conditions irrécupérables, comme les erreurs de programmation, pas besoin de try-catch, erreur d'exécution.
1. Exception vérifiée personnalisée
Note
Une exception vérifiée populaire:IOException,FileNotFoundException
1.1 If the client is able to recover from the exception, make it a checked exception. Pour créer une exception cochée personnalisée, étendjava.lang.Exception
NameNotFoundException.java
package com.example.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.example.examples;
import com.example.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();
}
}
}
Sortie
com.example.examples.exception.NameNotFoundException: Name is empty!
at com.example.examples.CustomerService.findByName(CustomerService.java:10)
at com.example.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)
2. Exception personnalisée non vérifiée
Note
Quelques exceptions populaires non vérifiées:NullPointerException,IndexOutOfBoundsException,IllegalArgumentException
2.1 If the client cannot do anything to recover from the exception, make it an unchecked exception. Pour créer une exception personnalisée non cochée, étendjava.lang.RuntimeException
ListTooLargeException.java
package com.example.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.example.examples;
import com.example.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, "example"));
obj.analyze(data);
}
}
Sortie
Exception in thread "main" com.example.examples.exception.ListTooLargeException: List can't exceed 50 items!
at com.example.examples.CustomerService.analyze(CustomerService.java:25)
at com.example.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)