Java中的异常类型

Java是一种面向对象的编程语言。它为各种机制提供支持,例如异常处理。Java的这一特性使开发人员能够管理由异常引起的运行时错误。

在本文中,您将了解Java中的异常。您还将了解Java中的不同类型的异常

例外是限制程序正常执行的不需要的错误或错误或事件。每次发生异常时,程序执行都会中断。屏幕上显示错误消息。

异常发生背后有几个原因。这些是发生异常的一些条件:

  • 每当用户提供无效数据时。
  • 系统中不存在请求访问的文件。
  • Java虚拟机(JVM)内存不足时。
  • 网络在通信中间掉线。

现在让我们在Java中探索不同类型的异常。

所有异常类的父类都是java.lang.Exception类。图1说明了不同类型的Java异常。

1539824546(1).jpg

图1:JAVA中的异常类型

1539824629(1).jpg






如果我们讨论Exception类,它是内置Throwable类的子类。还有另一个子类派生自Throwable类,即Error,如图1所示。错误可以定义为异常情况,表明程序执行出错。这些不是由Java程序处理的。

Throwable类中有一些重要的方法如下:

  • public String getMessage() – 提供有关通过消息发生的异常的信息,该消息在Throwable构造函数中初始化。
  • public Throwable getCause() – 提供由Throwable对象表示的异常的根本原因。
  • public void printStackTrace() – 用于显示toString()的输出以及到System.err的堆栈跟踪(错误输出流)。
  • public StackTraceElement [] getStackTrace() – 返回一个数组,其中每个元素都存在于堆栈跟踪中。索引0元素将表示调用堆栈的顶部,而数组的最后一个元素将标识调用堆栈的底部。

Java中主要有两种类型的异常,如下所示:

  • 检查异常
  • 未经检查的例外

检查异常

已检查的异常也称为编译时异常,因为编译器在编译过程中会检查这些异常,以确认是否由程序员处理异常。如果不是,则系统显示编译错误。例如,SQLExceptionIOExceptionInvocationTargetExceptionClassNotFoundException

为了说明检查异常的概念,让我们考虑以下代码片段:

 

输出:

 

throw关键字

在输出中清楚地显示程序在编译过程中抛出异常。有两种方法可以解决这些问题。您可以在throw关键字的帮助下声明异常。

 

输出:文件将显示在屏幕上。

try-catch块

除了上述方法之外,还有另一种解决异常的方法。您可以在try-catch块的帮助下管理它们。

 






输出:代码将平稳运行,并显示文件。

现在,让我们了解其他已检查的异常。他们之中有一些是:

的SQLException

在与SQL语法相关的数据库上执行查询时会发生此类异常。例如,请考虑以下代码段:

 

输出:此代码将生成SQLException。

IOException异常

使用文件I / O流操作时会发生此类异常。例如,请考虑以下代码段:

 

输出:此代码将生成IOException。

ClassNotFoundException的

当JVM无法找到所需的类时,抛出此类异常。这可能是由于命令行错误类路径问题缺少.class文件。例如,请考虑以下代码段:

 

输出:此代码将生成ClassNotFoundException。

的InvocationTargetException

此类异常包装由调用的方法或构造函数抛出的异常。可以在getTargetException的帮助下访问抛出的异常方法。例如,请考虑以下代码段:

 

输出:

 

输出:此代码将生成InstantiationException。

未经检查的例外

未经检查的异常是在程序执行期间发生的异常。因此,它们也称为运行时异常。在编译过程中通常会忽略这些异常。编译程序时不会检查它们。例如,编写错误,如逻辑错误,并使用不正确的API。

为了说明未经检查的异常的概念,让我们考虑以下代码片段:

 

输出1:

 

输出2:

 

现在,让我们了解其他未经检查的异常。他们之中有一些是:

空指针异常

当您尝试在当前值为null或为空的引用变量的帮助下访问对象时,会发生此类异常。例如,请考虑以下代码段:

 





输出:在程序中找到NullPointerException。

ArrayIndexOutofBound

当您尝试访问具有无效索引值的数组时,会发生此类异常。您提供的值是负数或超出数组的长度。

例如,请考虑以下代码段:

 

输出:数组索引超出范围

抛出:IllegalArgumentException

只要将不合适或不正确的参数传递给方法,就会发生此类异常。例如,如果使用非空字符串作为参数定义方法。但是您提供空输入字符串。然后,抛出IllegalArgumentException以指示用户无法将null输入字符串传递给该方法。

请考虑以下代码段来演示此类异常:

 

IllegalStateException异常

当环境状态与正在执行的操作不匹配时,会发生此类异常。例如,请考虑以下代码段,它演示了此类异常:

 

输出:此代码将生成IllegalStateException。

如果系统中已存在发布日期,则它将生成IllegalStateException,指示无法再次发布该图书。

NumberFormatException的

将字符串传递给无法转换为数字的方法时,会发生此类异常。例如,请考虑以下代码段:

 

输出:此代码将生成NumberFormatException。

ArithmeticException

执行不正确的算术运算时会发生此类异常。例如,如果将任何数字除以零,它将显示此类异常。让我们考虑以下代码段:

 

输出:此代码将生成ArithmeticException。