Java 中的异常(Exception)又称为破例,是一个在顺序实行时期发作的事宜,它中断正在实行的顺序的平常指令流。为了能够实时有效地处置惩罚顺序中的运转毛病,必需运用异常类。
异常简介
在顺序中,毛病能够发生于顺序员没有预料到的各种状况,或许超越顺序员可控局限的环境,比方用户的坏数据、试图翻开一个不存在的文件等。为了能够实时有效地处置惩罚顺序中的运转毛病,Java 特地引入了异常类。
例 1
为了更好地明白什么是异常,下面来看一段异常简朴的 Java 顺序。下面的示例代码完成了许可用户输入 1~3 之内的整数,其他状况提醒输入毛病。
package ch11; import Java.util.Scanner; public class TestO1 { public static void main(String[] args) { System.out.println("请输入您的挑选:(1~3 之间的整数)"); Scanner input=new Scanner(System.in); int num=input.nextInt(); switch(num) { case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; case 3: System.out.println("three"); break; default: System.out.println("error"); break; } } }
平常状况下,用户会根据体系的提醒输入 1~3 之间的数字。然则,假如用户没有按请求举行输入,比方输入了一个字母“a”,则顺序在运转时将会发作异常,运转效果以下所示。
请输入您的挑选:(1~3 之间的整数) a Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at text.text.main(text.java:11)
异常发生的缘由及运用准绳
在 Java 中一个异常的发生,主要有以下三种缘由:
1、Java 内部毛病发作异常,Java 虚拟机发生的异常。
2、编写的顺序代码中的毛病所发生的异常,比方空指针异常、数组越界异常等。这类异常称为未检査的异常,平常需要在某些类中集合处置惩罚这些异常。
3、经由历程 throw 语句手动生成的异常,这类异常称为检査的异常,平常用来示知该要领的挪用者一些必要的信息。
Java 经由历程面向对象的要领来处置惩罚异常。在一个要领的运转历程当中,假如发作了异常,则这个要领会发生代表该异常的一个对象,并把它交给运转时的体系,运转时体系寻觅响应的代码来处置惩罚这一异常。
我们把生成异常对象,并把它提交给运转时体系的历程称为拋出(throw)异常。运转时体系在要领的挪用栈中查找,直到找到能够处置惩罚该范例异常的对象,这一个历程称为捕捉(catch)异常。
Java 异常强迫用户斟酌顺序的强壮性和安全性。异常处置惩罚不该用来掌握顺序的平常流程,其主要作用是捕捉顺序在运转时发作的异常并举行响应处置惩罚。编写代码处置惩罚某个要领能够涌现的异常,可遵照以下三个准绳:
1、在当前要领声明中运用 try catch 语句捕捉异常。
2、一个要领被掩盖时,掩盖它的要领必需拋出雷同的异常或异常的子类。
3、假如父类抛出多个异常,则掩盖要领必需拋出那些异常的一个子集,而不能拋出新异常。
异常范例
在 Java 中一切异常范例都是内置类 java.lang.Throwable 类的子类,即 Throwable 位于异常类条理构造的顶层。Throwable 类下有两个异常分支 Exception 和 Error,如图 1 所示。
由图 2 能够晓得,Throwable 类是一切异常和毛病的超类,下面有 Error 和 Exception 两个子类离别示意毛病和异常。个中异常类 Exception 又分为运转时异常和非运转时异常,这两种异常有很大的区分,也称为不搜检异常(Unchecked Exception)和搜检异常(Checked Exception)。
·Exception 类用于用户顺序能够涌现的异常状况,它也是用来建立自定义异常范例类的类。
·Error 定义了在一般环境下不愿望被顺序捕捉的异常。Error 范例的异常用于 Java 运转时由体系显现与运转时体系自身有关的毛病。客栈溢出是这类毛病的一例。
·本章不议论关于 Error 范例的异常处置惩罚,由于它们一般是灾难性的致命毛病,不是顺序能够掌握的。本章接下来的内容将议论 Exception 范例的异常处置惩罚。
运转时异常都是 RuntimeException 类及其子类异常,如 NullPointerException、IndexOutOfBoundsException 等,这些异常是不搜检异常,顺序中能够挑选捕捉处置惩罚,也能够不处置惩罚。这些异常平常由顺序逻辑毛病引发,顺序应当从逻辑角度尽量防止这类异常的发作。
非运转时异常是指 RuntimeException 之外的异常,范例上都属于 Exception 类及其子类。从顺序语法角度讲是必需举行处置惩罚的异常,假如不处置惩罚,顺序就不能编译经由历程。如 IOException、ClassNotFoundException 等以及用户自定义的 Exception 异常,平常状况下不自定义搜检异常。表 1 列出了一些罕见的异常范例及它们的作用。
ki4网,大批的免费Java入门教程,迎接在线进修!
以上就是java中什么是异常的细致内容,更多请关注ki4网别的相干文章!