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);
}
}
}
未找到项目:未找到项目
需要记住的要点
- 扩展异常类以创建您自己的异常类。
- 您不必在其中实现任何东西,也不需要任何方法。
- 如果需要,可以有一个构造器。
- 您可以覆盖 toString()函数,以显示自定义消息。