In Java, possiamo creare le nostre eccezioni che sono classi derivate della classe Exception. La creazione della nostra eccezione è nota come eccezione personalizzata o eccezione definita dall'utente. Fondamentalmente, le eccezioni personalizzate Java vengono utilizzate per personalizzare l'eccezione in base alle esigenze dell'utente.
Considera l'esempio 1 in cui la classe InvalidAgeException estende la classe Exception.
Utilizzando l'eccezione personalizzata, possiamo avere la tua eccezione e il tuo messaggio. Qui, abbiamo passato una stringa al costruttore della superclasse, ovvero la classe di eccezione che può essere ottenuta utilizzando il metodo getMessage() sull'oggetto che abbiamo creato.
In questa sezione impareremo come vengono implementate e utilizzate le eccezioni personalizzate nei programmi Java.
Perché utilizzare eccezioni personalizzate?
Le eccezioni Java coprono quasi tutti i tipi generali di eccezioni che possono verificarsi nella programmazione. Tuttavia, a volte è necessario creare eccezioni personalizzate.
Di seguito sono riportati alcuni dei motivi per utilizzare le eccezioni personalizzate:
- Per individuare e fornire un trattamento specifico a un sottoinsieme di eccezioni Java esistenti.
- Eccezioni della logica aziendale: queste sono le eccezioni relative alla logica aziendale e al flusso di lavoro. È utile che gli utenti dell'applicazione o gli sviluppatori comprendano il problema esatto.
Per creare un'eccezione personalizzata, dobbiamo estendere la classe Exception che appartiene al pacchetto java.lang.
mylivecricket per il cricket dal vivo
Considera l'esempio seguente, in cui creiamo un'eccezione personalizzata denominata WrongFileNameException:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Nota: dobbiamo scrivere il costruttore che accetta la stringa come messaggio di errore e si chiama costruttore della classe genitore.
Esempio 1:
Vediamo un semplice esempio di eccezione personalizzata Java. Nel codice seguente, il costruttore di InvalidAgeException accetta una stringa come argomento. Questa stringa viene passata al costruttore della classe genitore Exception utilizzando il metodo super(). Anche il costruttore della classe Exception può essere chiamato senza utilizzare un parametro e la chiamata al metodo super() non è obbligatoria.
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){>
Produzione:
18){>