一、简单原理
java中Throwable这个类可以被作为异常抛出的类,继承它的分为异常Exception和错误Error.
- Exception表示程序需要捕捉和处理的的异常;
- Error表示系统级别的错误和程序无需处理的。
我们所需要关心的是Exception. Execption可以分为java标准定义的异常和程序员自定义异常2种.
- (1)一种是当程序违反了java语规则的时候,JAVA虚拟机就会将发生的错误表示为一个异常.这里语法规则指的是JAVA类库内置的语义检查。
- (2)另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是Thowable的子类。
异常处理是与程序执行是并行的.
二、主要关键字
- java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字。
- try 关键字后紧跟一个花括号括起来的代码块,简称try块。同理:下面的也被称为相应的块。它里面可置引发异常的代码。
- catch后对应异常类型和一个代码块,用于表明catch块用于处理这种类型的代码块。后还可以跟一个finally块。
- finally块用于回收在try块里打开的物理资源,异常机制会保证finally块总被执行
- throws关键字主要在方法签名中使用,用于声明该方法可能抛出的异常。
- 而throw则用于抛出一个实际的异常,throw可以单独作为语句使用,抛出一个具体的异常的对象
Try{
//可能发现异常的语句块
}catch(异常类型 e){
//发生异常时候的执行语句块
} finally{
//不管是否发生异常都执行的语句块
}
三、Error和Exception的区别
Java中的Error和Exception都是来之Throwable 这个Class的,是他的SubClass,
- Error:是系统中的错误,程序员是不能改变,处理的,在程序编译的时候出现的错误.只有通过修改程序才能修正Error.
- Exception:是在程序运行的时候捕捉的错误,是可以处理的异常.
- 语法是:
try{}
catch(Exception 名字){}
finally
{进行资源的清理工作: 比如关闭打开的文件: 删除临时的文件; ....}
Exception:它也分两种:RuntimeException(是经常出现的错误可以不catch)和其他Exception(是必须要catch的,这样程序才能继续,像某个方法里面有throw IoException).
JAVA语言如何进行异常处理
执行步骤:
1.如果执行try块中的业务逻辑代码时出现异常,系统自动生成一个异常对象,该异常对象被提交给java运行环境,这个过程称为抛出(throw)异常。
2.当java运行环境收到异常对象时,会寻找能处理该异常对象的catch块,如果找到合适的cathc块并把该异常对象交给catch块处理,那这个过程称为捕获(catch)异常;如果java运行时环境找不到捕获异常的catch块,则运行时环境终止,jav程序也将退出。
注意
注意1:不管程序代码块是否处于try块中,甚至包括catch块中代码,只要执行该代码时出现了异常,系统都会自动生成一个异常对象,如果程序没有为这段代码定义任何catch块,java运行环境肯定找不到处理该异常的catch块,程序肯定在此退出。
注意2:try块后可以有多个catch块,try块后使用多个catch块是为了针对不同异常类提供的不同的异常处理方式。当系统发生不同意外情况时,系统会生成不同的异常对象,java运行时就会根据该异常对象所属的异常类来决定使用哪个catch块来处理该异常。
注意3:通常情况下,如果try块被执行一次,则try块后只有一个catch块会被执行,绝不可能有多个catch块被执行,除非在循环中使用类continue开始下一次循环,下一次循环又重新运行了try块,这才可能导致多个catch块被执行。
注意4:进行异常捕获时,一定要记住先捕获小的异常,再捕获大的异常。