我们先来思考什么是异常
异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。
什么是异常处理
Java使用异常处理机制为程序提供了错误处理的能力
Java中如何进行异常处理
Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws
要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。
Throwable又派生出Error类和Exception类。
错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。
异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。
我们根据Javac对异常的处理要求,将异常类分为2类:
非检查异常:javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果我们愿意,我们可以编写代码处理这样的异常,也可以不处理。对于这些异常,我们可以修正代码,而不是去通过异常处理器处理 。这样的异常发生的原因多半是代码写的有问题。
检查异常:除了Error 和 RuntimeException的其它异常。javac强制要求程序员为这样的异常做预备处理工作,在方法中要么用try-catch语句捕获它并处理,要么用throws子句声明抛出它,否则编译不会通过。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,于是程序员就应该为这样的异常时刻准备着。