Java 中用户定义的异常子类

原文:https://www.studytonight.com/java/create-your-own-exception.php

Java 提供了一组丰富的内置异常类,如:ArithmeticException、IOException、NullPointerException 等。所有这些都可以在 java.lang 包中获得,并用于异常处理。这些异常已经被设置为在预定义的条件下触发,例如当您将一个数除以零时,它会触发算术异常。

除了这些类,Java 允许我们创建自己的异常类来提供自己的异常实现。这些类型的异常称为用户定义的异常或自定义的异常。

您可以简单地通过扩展 java 异常类来创建自己的异常。您可以为您的异常定义一个构造器(非强制的),并且您可以覆盖toString()函数以在捕获时显示您定制的消息。让我们看一个例子。

示例:自定义例外

在这个例子中,我们创建了一个异常类 MyException,它扩展了 Java 异常类

class MyException extends Exception
{
  private int ex;
  MyException(int a)
  {
    ex = a;
  }
  public String toString()
  {
    return "MyException[" + ex +"] is less than zero";
  }
}

class Demo
{
  static void sum(int a,int b) throws MyException
  {
    if(a<0)
    {
      throw new MyException(a); //calling constructor of user-defined exception class
    }
    else
    {
      System.out.println(a+b);
    }
  }

  public static void main(String[] args)
  {
    try
    {
      sum(-10, 10);
    }
    catch(MyException me)
    {
      System.out.println(me); //it calls the toString() method of user-defined Exception
    }
  }
}

MyException[-10]小于零

示例:自定义例外

让我们再举一个例子来理解自定义异常。这里我们创建了一个 ItemNotFound 类,它扩展了 Exception 类并帮助生成我们自己的异常实现。

 class ItemNotFound extends Exception
{
  public ItemNotFound(String s) {
    super(s);
  }

}

class Demo
{
  static void find(int arr[], int item) throws ItemNotFound
  {
    boolean flag = false;
    for (int i = 0; i < arr.length; i++) {
      if(item == arr[i])
        flag = true;
    }
    if(!flag)
    {
      throw new ItemNotFound("Item Not Found"); //calling constructor of user-defined exception class
    }
    else
    {
      System.out.println("Item Found");
    }
  }

  public static void main(String[] args)
  {
    try
    {
      find(new int[]{12,25,45}, 10);
    }
    catch(ItemNotFound i)
    {
      System.out.println(i);
    }
  }
}

未找到项目:未找到项目

需要记住的要点

  1. 扩展异常类以创建您自己的异常类。
  2. 您不必在其中实现任何东西,也不需要任何方法。
  3. 如果需要,可以有一个构造器。
  4. 您可以覆盖 toString()函数,以显示自定义消息。