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

¿Se puede crear una excepción personalizada en Java sin extender la clase Exception?

Las excepciones son problemas que ocurren durante la ejecución del programa (errores en tiempo de ejecución). Cuando ocurre una excepción, el programa termina repentinamente y el código que sigue a la línea de la excepción nunca se ejecutará.

Excepciones definidas por el usuario

Puedes crear tus propias excepciones en Java, estas se denominan excepciones definidas por el usuario o excepciones personalizadas.

  • Todas las excepciones deben ser subclases de Throwable.

  • Para escribir excepciones comprobadas que se ejecutan automáticamente mediante Handle o Delare Rule, debe extenderExceptionclase.

  • Para escribir excepciones de tiempo de ejecución, debe extenderRuntimeExceptionclase.

¿Es necesario extender la clase Exception?

No es obligatorio extender la clase Exception para crear excepciones personalizadas, también puedes extender la clase Throwable (la superclase de todas las excepciones).

Ejemplo

El siguiente ejemplo en Java crea una excepción personalizada llamada AgeDoesnotMatchException que limita la edad del usuario a17años.24La edad debe estar entre. Aquí, creamos esta clase sin extender la clase 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 = "Age is not between 17 y 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("Name of the Student: ");+this.name );
      System.out.println("Age of the Student: ");+this.age );
   }
   public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Ingrese el nombre del Estudiante: ");
      String name = sc.next();
      System.out.println("Ingrese la edad del Estudiante, debe ser 17 a 24 (incluyendo 17 y 24): ");
      int age = sc.nextInt();
      CustomException obj = new CustomException(name, age);
      obj.display();
   }
}

Resultado de la salida

Ingrese el nombre del Estudiante:
Krishna
Ingrese la edad del Estudiante, debe ser 17 a 24 (incluyendo 17 y 24):
30
july_set3.AgeDoesnotMatchException: La edad no está entre 17 y 24
Nombre del Estudiante: Krishna
Edad del Estudiante: 30
at julio_set3.CustomException.<init>(CustomException.java:)17)
at julio_set3.CustomException.main(CustomException.java:)36)