目录
把异常抓住
在java中,能够把异常抓住并处理的语句就是try-catch语句
try{
//可能发生异常的代码
}catch(异常类型 异常引用){
//异常处理的代码
}
try和catch都是java里面的关键字。try关键字后面的一对大括号的内容叫做try语句块,catch关键字后面的小括号是声明了一个异常引用
异常的类型:对于每种异常,都需要使用一种对于的异常类型来表示,而这么做的原因是因为catch语句是根据异常类型来进行匹配的,对于异常采取何种处理,是建立在异常类型的基础上的,所以异常类型很重要。
图说异常处理流程
如果A类型并表示B类型的父类,那么程序用来处理A类型的catch语句是无法处理B类型语句的异常。根据这个规则,B类型的异常还是会继续被抛出,然后这个异常也还会被java处理,所以控制台还是会输出相应的错误信息。
多类异常,一并处理
在java中,所谓的处理异常其实就是根据异常类型,提供不同的catch语句分类进行处理,java异常处理机制会将异常类型传递给catch语句,然后catch语句就可以根据异常对象进行具体分析,给出相应的不就措施,使程序可以继续进行下去。
try{
//可能发生异常的代码
}catch(异常类型1异常引用){
//异常处理代码
}catch(异常类型2异常引用){
//异常处理代码
}
....
当有多个catch语句的时候,java的异常机制只会找到第一个匹配的catch语句并执行其代码块,剩余的catch语句将不会继续尝试匹配。但是一个try语句必须至少含有一个catch语句。
try-catch-finally语句
try{
//可能发生异常的代码
}catch(异常类型1异常引用){
//异常处理代码
}catch(异常类型2异常引用){
//异常处理代码
}finally{
//finally语句代码块
}
finally语句块并不处理异常,如果一个异常没有被catch语句处理掉,那么在这个异常语句被抛出方法前,会首先执行finally语句,但是在finally语句执行完后,又会被抛出去。
finally语句一定会被执行!!!
try-finally语句
还有一个try-finally语句,他的作用就是使用finally语句来确保执行某些代码的。如果try语句中执行某些异常,但是如果try和finally一起使用还是有意义的,可以在抛出异常前,利用finally语句来进行扫尾工作
try-finally语句没有处理异常,异常还是会传递出去。
好好利用catch语句
catch语句一旦捕捉到错误信息,其实并没有进行任何的补救
在catch语句中处理异常的方式有很多种,修改参数并在尝试一次是一种方式。还有些情况下程序 只能输出错误信息到控制台。