English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

È possibile creare un'eccezione personalizzata in Java senza estendere la classe Exception?

Le eccezioni sono problemi che si verificano durante l'esecuzione del programma (errori di runtime). Quando si verifica un'eccezione, il programma si interrompe bruscamente e il codice dopo la riga che ha generato l'eccezione non verrà mai eseguito.

Eccezioni definite dall'utente

Puoi creare le tue eccezioni in Java, che si chiamano eccezioni definite dall'utente o eccezioni personalizzate.

  • Tutte le eccezioni devono essere sottoclasse di Throwable.

  • Se si desidera scrivere eccezioni controllate eseguite automaticamente da Handle o Delare Rule, è necessario espandereExceptionClasse.

  • Per scrivere un'eccezione di runtime, è necessario estendereRuntimeExceptionClasse.

È necessario estendere la classe Exception?

Non è obbligatorio estendere la classe Exception per creare eccezioni personalizzate, è possibile farlo estendendo la classe Throwable (superclasse di tutte le eccezioni).

Esempio

Ecco un esempio Java che crea un'eccezione personalizzata chiamata AgeDoesnotMatchException, che limita l'età dell'utente tra 17 e 24 anni. In questo esempio, la creazione non richiede l'estensione della classe Exception.

import java.util.Scanner;
class AgeDoesnotMatchException extends Throwable{
   AgeDoesnotMatchException(String msg){
      super(msg);
   }
}
public class CustomException{
   private String name;
   private int age;
   public CustomException(String name, int age){
      try {
         if (age<17||age>24) {
            String msg = "L'età non è compresa tra 17 e 24";
            AgeDoesnotMatchException ex = new AgeDoesnotMatchException(msg);
            throw ex;
         }
      }catch(AgeDoesnotMatchException e) {
         e.printStackTrace();
      }
      this.name = name;
      this.age = age;
   }
   public void display(){
      System.out.println("Nome dello Studente: "+this.name );
      System.out.println("Età dello Studente: "+this.age );
   }
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Inserisci il nome dello Studente: ");
      String name = sc.next();
      System.out.println("Inserisci l'età dello Studente, deve essere tra 17 e 24 (inclusi 17 e 24): ");
      int age = sc.nextInt();
      CustomException obj = new CustomException(name, age);
      obj.display();
   }
}

Risultato dell'output

Inserisci il nome dello Studente:
Krishna
Inserisci l'età dello Studente, deve essere tra 17 e 24 (inclusi 17 e 24):
30
july_set3.AgeDoesnotMatchException: L'età non è compresa tra 17 e 24
Nome dello Studente: Krishna
Età dello Studente: 30
at july_set3.CustomException.<init>(CustomException.java:17)
at july_set3.CustomException.main(CustomException.java:36)