📜  Java中用户定义的自定义异常

📅  最后修改于: 2022-05-13 01:55:41.361000             🧑  作者: Mango

Java中用户定义的自定义异常

异常是在程序执行期间发生的问题(运行时错误)。当发生异常时,程序会突然终止,并且生成异常的行之后的代码永远不会被执行。

Java为我们提供了创建自己的异常的工具,这些异常基本上是 Exception 的派生类。创建我们自己的异常称为自定义异常或用户定义异常。基本上, Java自定义异常是用来根据用户需求自定义异常的。简单来说,我们可以说用户定义的异常或自定义异常正在创建您自己的异常类并使用“throw”关键字抛出该异常。

例如,下面代码中的 MyException 扩展了 Exception 类。

为什么要使用自定义异常?

Java异常几乎涵盖了编程中可能出现的所有常规异常类型。但是,我们有时需要创建自定义异常。

以下是使用自定义异常的一些原因:

  • 捕获现有Java异常的子集并提供特定处理。
  • 业务逻辑异常:这些是与业务逻辑和工作流相关的异常。对于应用程序用户或开发人员了解确切的问题很有用。

为了创建自定义异常,我们需要扩展属于Java.lang 包的 Exception 类。

示例:我们将字符串传递给超类 Exception 的构造函数,该构造函数是在创建的对象上使用“getMessage()”函数获得的。

Java
// A Class that represents use-defined exception
 
class MyException extends Exception {
    public MyException(String s)
    {
        // Call constructor of parent Exception
        super(s);
    }
}
 
// A Class that uses above MyException
public class Main {
    // Driver Program
    public static void main(String args[])
    {
        try {
            // Throw an object of user defined exception
            throw new MyException("GeeksGeeks");
        }
        catch (MyException ex) {
            System.out.println("Caught");
 
            // Print the message from MyException object
            System.out.println(ex.getMessage());
        }
    }
}


Java
// A Class that represents use-defined exception
 
class MyException extends Exception {
}
 
// A Class that uses above MyException
public class setText {
    // Driver Program
    public static void main(String args[])
    {
        try {
            // Throw an object of user defined exception
            throw new MyException();
        }
        catch (MyException ex) {
            System.out.println("Caught");
            System.out.println(ex.getMessage());
        }
    }
}



输出
Caught
GeeksGeeks

在上面的代码中,MyException 的构造函数需要一个字符串作为其参数。使用 super() 将字符串传递给父类 Exception 的构造函数。 Exception 类的构造函数也可以不带参数调用,对 super 的调用也不是必须的。

Java

// A Class that represents use-defined exception
 
class MyException extends Exception {
}
 
// A Class that uses above MyException
public class setText {
    // Driver Program
    public static void main(String args[])
    {
        try {
            // Throw an object of user defined exception
            throw new MyException();
        }
        catch (MyException ex) {
            System.out.println("Caught");
            System.out.println(ex.getMessage());
        }
    }
}


输出
Caught
null