自定义 Java 异常
原文:https://www.studytonight.com/java-examples/custom-java-exception
异常是执行程序时发生的不良事件。异常干扰了我们代码的正常执行流程。Java 定义了许多内置的异常,涵盖了可能发生错误的不同场景。但是,我们可能需要自定义异常来处理一些特殊情况。在本教程中,我们将学习如何在 Java 中创建自定义异常。
为什么我们需要自定义例外?
- Java 提供了不同的异常,它们几乎涵盖了我们在编程过程中可能遇到的每一种情况。但是在一些情况下,我们可能需要一个定制的例外。
- 例如,假设我们有一个银行类。如果账户余额低于 0 美元,那么我们可能需要抛出资金不足异常。
- 以下是我们可能需要自定义的、用户定义的异常的两种一般情况。
- 与我们的业务逻辑或工作流程相关的异常(如银行示例)。
- 为现有异常提供特定处理。
自定义检查例外
检查异常是在编译时检查的异常。如果代码的某些部分引发了选中的异常,则必须使用 try-catch 块或方法定义中的 throws 关键字来处理该异常。
为了创建一个用户定义的检查异常,我们需要扩展异常类。
例子
让我们创建一个 MyArray 类并实现一个 get()方法。如果索引无效,此方法将引发 IndexNotValidException 异常。
//Custom Checked exception
class IndexNotValidException extends Exception
{
IndexNotValidException(String msg)//Constructor with error message
{
super(msg);
}
}
class MyArray
{
int[] array;
MyArray(int size)//Constructor for our array class
{
array = new int[size];
for(int i=0; i<size; i++)
array[i] = i*5;
}
//Get Method may throw IndexNotValidException
public int get(int index) throws IndexNotValidException
{
if(index >= array.length)
throw new IndexNotValidException("Index " + index+ " is invalid.");//Throwing the exception
else
return array[index];
}
}
public class Demo
{
public static void main(String[] args)
{
MyArray arr = new MyArray(5);
try {
arr.get(10);//Error
}
catch (IndexNotValidException e) {
e.printStackTrace();
}
}
}
IndexNotValidException:索引 10 无效。 在 MyArray.get(Demo.java:24) 在 Demo.main(Demo.java:39)
如上面的代码所示,IndexNotValidException 扩展了异常类。我们在 IndexNotValidException 类中使用了一个构造器。这会调用带有错误消息的父构造器。
自定义未检查的例外
编译时不检查未检查的异常。此类异常仅在运行时检测到。要创建自定义的未检查异常,我们需要扩展 RuntimeException 类。
例子
我们可以扩展 RuntimeException 类而不是 Exception 类来创建一个未检查的异常。我们还可以定义一个可抛出的异常,它定义了潜在的异常或异常的原因。在我们的例子中,潜在的例外是 ArrayIndexOutOfBounds 。完整的代码如下所示。
//Custom Unchecked exception
class IndexNotValidException extends RuntimeException
{
IndexNotValidException(String msg, Throwable cause)//Constructor with error message and cause
{
super(msg, cause);
}
}
class MyArray
{
int[] array;
MyArray(int size)//Constructor for our array class
{
array = new int[size];
for(int i=0; i<size; i++)
array[i] = i*5;
}
//Get Method may throw IndexNotValidException
public int get(int index) throws IndexNotValidException
{
if(index >= array.length)
{
Exception cause = new ArrayIndexOutOfBoundsException();//Cause of our exception
throw new IndexNotValidException("Index " + index+ " is invalid.", cause);//Throwing the exception
}
else
return array[index];
}
}
public class Demo
{
public static void main(String[] args)
{
MyArray arr = new MyArray(5);
arr.get(10);//Exception occurs here
}
}
线程“main”中出现异常 IndexNotValidException:索引 10 无效。 在 MyArray.get(Demo.java:24) 在 Demo.main(Demo.java:39) 由:Java . lang . arrayindexoutofboundsexception 在 MyArray.get(Demo.java:23) 引起...1 个以上
摘要
当我们使用任何编程语言时,异常和错误都很常见。自定义异常帮助我们识别特定于我们自己的应用的错误。自定义异常用于识别我们的业务逻辑和工作流中的错误。它们也用于在现有异常的基础上构建一些东西。