exception是什么意思 exception异常


众多事物的发展往往不会完全遵循个人的预设轨迹,时常会出现形形的突发性状况。以一个简单的例子来说:你原计划周末出游,从家中启程—抵达目的地—游泳—烧烤—返家。然而天公不作美,当你正准备烧烤之时,天降大雨,只能无奈中断行程,提前打道回府。“天降大雨”就是一种意料之外的状况,你的计划应当考虑到这种可能性,并预备好应对这类突发状况的方案。

编程亦然,需对这类突况有所准备。异常(exception)是程序执行过程现的一种特殊情况,它已经成为衡量一门编程语言是否成熟的重要指标之一。主流编程语言Java亦提供了完善的异常处理机制。

在Java世界里,异常又被称作例外,是程序执行期间产生的一种事件,它能够打断程序的正常指令流。为了有效处理程序中的运行错误,必须引入异常类,这能让程序具备出色的容错性和稳健性。Java中异常的产生主要有以下三个原因:

  1. Java内部错误引发的异常,如Java虚拟机产生的异常。
  2. 程序代码中的错误所引发的异常,如空指针异常、数组越界异常等。
  3. 通过throw语句手动抛出的异常,一般用于向方法的调用者传达必要信息。

Java采用面向对象的方法来处理异常。当方法执行过程现异常时,该方生成代表该异常的对象,并将其交给运行时系统。系统会寻找相应的代码来处理这一异常。我们称生成异常对象并将其提交给运行时系统的过程为“抛出”(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一过程称为“捕获”(catch)异常。

例证一:为了更直观地理解异常的概念,我们来看一段简单的Java程序。这段代码旨在允许用户输入1至3之间的整数,对于其他情况则提示输入错误。

通常情况下,用户会按照系统提示输入指定范围内的数字。如果用户未按照要求输入,例如输入了字母,那么在程序运行时将产生异常。这种情况下的运行结果如下所述。

Java特意引入了异常类以有效处理程序中的运行错误。在Java中,所有异常类型都是内置类java.lang.Throwable类的子类。换句话说,Throwable类位于异常类层次结构的顶端。Throwable类下分为两个分支:Exception和Error,如图所示。

如图所示,Throwable类是所有异常和错误的超类,其下有Error和Exception两个子类分别代表错误和异常。Exception类进一步分为运行时异常和非运行时异常,这两种异常存在显著差异,分别被称为未检查异常(Unchecked Exception)和已检查异常(Checked Exception)。

  • Exception类用于描述用户程序中可能出现的异常情况,它也是用于创建自定义异常类型类的基类。
  • Error类定义了在常规环境下通常不被程序捕获的异常。这通常指的是JVM错误,如栈溢出。