A Java, podem crear les nostres pròpies excepcions que són classes derivades de la classe Exception. La creació de la nostra pròpia excepció es coneix com a excepció personalitzada o excepció definida per l'usuari. Bàsicament, les excepcions personalitzades de Java s'utilitzen per personalitzar l'excepció segons les necessitats de l'usuari.
Considereu l'exemple 1 en què la classe InvalidAgeException amplia la classe Exception.
Utilitzant l'excepció personalitzada, podem tenir la vostra excepció i missatge. Aquí, hem passat una cadena al constructor de la superclasse, és a dir, una classe d'excepció que es pot obtenir mitjançant el mètode getMessage() a l'objecte que hem creat.
En aquesta secció, aprendrem com s'implementen i s'utilitzen les excepcions personalitzades als programes Java.
Per què utilitzar excepcions personalitzades?
Les excepcions de Java cobreixen gairebé tots els tipus generals d'excepcions que es poden produir en la programació. Tanmateix, de vegades hem de crear excepcions personalitzades.
A continuació es mostren algunes de les raons per utilitzar excepcions personalitzades:
- Per capturar i proporcionar un tractament específic a un subconjunt d'excepcions de Java existents.
- Excepcions de la lògica empresarial: aquestes són les excepcions relacionades amb la lògica empresarial i el flux de treball. És útil que els usuaris de l'aplicació o els desenvolupadors entenguin el problema exacte.
Per crear una excepció personalitzada, hem d'ampliar la classe d'excepcions que pertany al paquet java.lang.
Considereu l'exemple següent, on creem una excepció personalitzada anomenada WrongFileNameException:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Nota: Hem d'escriure el constructor que pren la cadena com a missatge d'error i s'anomena constructor de classe pare.
Exemple 1:
Vegem un exemple senzill d'excepció personalitzada de Java. Al codi següent, el constructor de InvalidAgeException pren una cadena com a argument. Aquesta cadena es passa al constructor de la classe principal Exception mitjançant el mètode super(). També es pot cridar al constructor de la classe Exception sense utilitzar un paràmetre i cridar al mètode super() no és obligatori.
TestCustomException1.java
// class representing custom exception class InvalidAgeException extends Exception { public InvalidAgeException (String str) { // calling the constructor of parent Exception super(str); } } // class that uses custom exception InvalidAgeException public class TestCustomException1 { // method to check the age static void validate (int age) throws InvalidAgeException{ if(age <18){ throw an object of user defined exception new invalidageexception('age is not valid to vote'); } else { system.out.println('welcome main method public static void main(string args[]) try calling the validate(13); catch (invalidageexception ex) system.out.println('caught exception'); printing message from invalidageexception system.out.println('exception occured: ' + ex); system.out.println('rest code...'); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception.webp" alt="Java Custom Exception"> <h3>Example 2:</h3> <p> <strong>TestCustomException2.java</strong> </p> <pre> // class representing custom exception class MyCustomException extends Exception { } // class that uses custom exception MyCustomException public class TestCustomException2 { // main method public static void main(String args[]) { try { // throw an object of user defined exception throw new MyCustomException(); } catch (MyCustomException ex) { System.out.println('Caught the exception'); System.out.println(ex.getMessage()); } System.out.println('rest of the code...'); } } </pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception-2.webp" alt="Java Custom Exception"> <hr></18){>
Sortida:
18){>