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

Come può un programmatore lanciare manualmente un'eccezione in Java?

L'eccezione è un problema che si verifica durante l'esecuzione del programma (errore di runtime). Quando si verifica un'eccezione, il programma si interrompe improvvisamente e il codice dopo la riga dell'eccezione non verrà mai eseguito.

Esempio

import java.util.Scanner;
public class ExceptionExample {
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Inserisci il primo numero: ");
      int a = sc.nextInt();
      System.out.println("Inserisci il secondo numero:");
      int b = sc.nextInt();
      int c = a / b;
      System.out.println("Il risultato è: " + c);
   }
}

Risultato dell'output

Inserisci il primo numero:
100
Inserisci il secondo numero:
0
Eccezione nel thread "main" java.lang.ArithmeticException: / by zero
at ExceptionExample.main(ExceptionExample.java:10)

lanciare manualmente un'eccezione

Puoi usarethrow La parola chiave esplicita lancia eccezioni definite dall'utente o predefinite.

Le eccezioni definite dall'utente e predefinite hanno due tipi, ciascuna rappresentata da una classe e che eredita la classe Throwable.

Per lanciare esplicitamente un'eccezione, è necessario istanziare la sua classe e utilizzare la parola chiave throw per lanciare l'oggetto.

Esempio

Il seguente programma Java lancia un NullPointerException

public class ExceptionExample {
   public static void main(String[] args) {
      System.out.println("Ciao");
      NullPointerException nullPointer = new NullPointerException();
      throw nullPointer;
   }
}

Risultato dell'output

Ciao
Eccezione nel thread "main" java.lang.NullPointerException
   at MyPackage.ExceptionExample.main(ExceptionExample.java:6)

Ogni volta che si lancia esplicitamente un'eccezione, è necessario assicurarsi che la riga con la parola chiave throw sia l'ultima riga del programma. Questo perché qualsiasi codice scritto dopo questa riga non è accessibile e se ci sono ancora frammenti di codice sotto questa riga, viene generato un errore di compilazione.

Esempio

public class ExceptionExample {
   public static void main(String[] args) {
      System.out.println("Ciao");
      NullPointerException nullPointer = new NullPointerException();
      throw nullPointer;
      System.out.println("Come stai");
   }
}

Errore di compilazione

D:\>javac ExceptionExample.java
ExceptionExample.java:6: errore: istruzione non raggiungibile
   System.out.println("Come stai");
   ^
1 error

Eccezione definita dall'utente

Di solito la parola chiave throw viene utilizzata per sollevare eccezioni definite dall'utente. Ogni volta che dobbiamo definire la nostra eccezione, dobbiamo definire una classe che estende la classe Throwable e sovrascrivere i metodi necessari.

Istanziamo questo oggetto e utilizziamolo ovunque serve l'eccezione con la parola chiave throw.

Esempio

Nel seguente programma Java, creeremo una classe di eccezione personalizzata chiamata AgeDoesnotMatchException.

public class AgeDoesnotMatchException extends Exception {
   AgeDoesnotMatchException(String msg) {
      super(msg);
   }
}

Un'altra classe Student contiene due variabili private nome age e un costruttore parametrizzato per inizializzare le variabili di istanza.

Come metodo principale, accettiamo il nome dell'utente e il valore dell'età, e inizializziamo la classe Student passando i valori accettati.

Nella costruzione del metodo del costruttore di Student, abbiamo creato un'eccezioneAgeDoesnotMatchExceptionl'oggetto, e ha sollevato un'eccezione (usando throws) quando il valore dell'età è compreso tra 17 e 24.

public class Student extends RuntimeException {
   private String name;
   private int age;
   public Student(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();
      Student obj = new Student(name, age);
      obj.display();
   }
}

Risultato dell'output

Quando esegui questo programma, devi passare al tastierino i valori di nome e età. Se il valore dell'età fornito non è compreso tra 17 e 24, si verifica un'eccezione come nella seguente esempio-

Inserisci il nome dello Studente:
Krishna
Inserisci l'età dello Studente deve essere tra 17 e 24 (inclusi 17 e 24):
14
AgeDoesnotMatchException: L'età non è compresa tra 17 e 24
Nome dello Studente: Krishna'
Età dello Studente: 14
   at Student.<init>(Student.java:18)
   at Student.main(Student.java:39)
Ti potrebbe interessare