一、什么是异常?
1.java异常简介
在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,例如用户的坏数据、试图打开一个不存在的文件等。为了能够及时有效地处理程序中的运行错误,Java 专门引入了异常类
2.异常实例(演示异常)
允许用户输入 1~3 以内的整数,其他情况提示输入错误
import java.util.Scanner;
public class Test01 {
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;
}
}
}
如果用户没有按要求进行输入,例如输入了一个字母“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)
二、异常产生的原因及使用原则
1.异常产生的主要原因
-
Java 内部错误发生异常,Java 虚拟机产生的异常 -
编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检査的异常,一般需要在某些类中集中处理这些异常 -
通过 throw 语句手动生成的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息
Java 通过面向对象的方法来处理异常。在一个方法的运行过程中,如果发生了异常,则这个方法会产生代表该异常的一个对象,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。
我们把生成异常对象,并把它提交给运行时系统的过程称为拋出(throw)异常。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为捕获(catch)异常
2.对于可能产生的异常,遵循以下原则
-
在当前方法声明中使用 try catch 语句捕获异常 -
一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类 -
如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常
三、异常处理
1.处理异常的关键字
Java 的异常处理通过 5 个关键字来实现:try、catch、throw、throws 和 finally
- try catch 语句用于捕获并处理异常
- finally 语句用于在任何情况下(除特殊情况外)都必须执行的代码
- throw 语句用于拋出异常
- throws 语句用于声明可能会出现的异常
2.处理异常的机制
- 在方法中用 try catch 语句捕获并处理异常,catch 语句可以有多个,用来匹配多个异常
- 对于处理不了的异常或者要转型的异常,在方法的声明处通过 throws 语句拋出异常,即由上层的调用方法来处理
try {
逻辑程序块
} catch(ExceptionType1 e) {
处理代码块1
} catch (ExceptionType2 e) {
处理代码块2
throw(e);
} finally {
释放资源代码块
}
|