Java入门——day19

一、今日学习

Try...catch...finally...

(1)使用try...catch...finally...语句处理异常,它捕获被命名为属于异常类的异常,并调用方法处理它,finally无论有无异常都会执行。

(2)形式:

 1 try    //监视
 2    {
 3     可能发生异常的代码块;
 4    }
 5    catch(异常类型 异常对象名)
 6        //捕获并处理异常
 7    {
 8        异常处理代码块;
 9    }finally {
10         //最终执行
11    }

(3)实例:

 

 (4)catch语句可以有多个,并且要捕获Exception,则将Exception放在最后,不能放在前面,否则会出错。即:如果要捕获多个异常,异常的范围要按照从小到大顺序叠放。

注:finally可以省略

 (5)总结:

  • 当抛出一个异常时,异常会由相应的catch语句捕获并处理,与一个try相关的catch语句可以有多个,构成多重catch语句,异常类型决定了要执行哪个catch语句,如果没有抛出异常,try代码块就会结束,并且会跳过它的所有catch语句,从最后一个catch后面的第一个语句继续执行。

  • try语句也可以嵌入try语句,一个try代码块可以嵌入到另一个try代码块中,由于内部try代码块产生的异常如果没有被与该内部try代码块相关的catch捕获,就会传到外部try代码块。

二、遇到问题

使用try...catch...finally时遇到警告:finally block does not complete normally

查找资料分析原因是:如果finally块中包含return语句,会覆盖前面的return语句(try块、catch块中的),即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,而是会得到finally块的返回值,不会捕获异常,编译器会报警告。

三、明日学习

Java的剩余三个抛出异常的方法

原文地址:https://www.cnblogs.com/znjy/p/13374947.html