首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

try catch finally与return的施行顺序

2013-03-12 
try catch finally与return的执行顺序1.不管有无异常,finally里的语句都会执行(通常在finally语句中可以进

try catch finally与return的执行顺序
1.不管有无异常,finally里的语句都会执行
(通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等 )
2.当try 或catch 块里有return语句时,finally仍会执行
3.finally语句里不能包含return语句(实践证明可以包含,但是需要加上@SuppressWarnings("finally"),当包含return时候,程序会到此为止,不再往下执行)
4.finally在return(不论是try或catch里的return)前执行,不会改变已经确定的return值





代码一

import java.io.*;public class Mine{  public static void main(String argv[]){  Mine m=new Mine();    System.out.println(m.amethod());  }public int amethod(){       try{           FileInputStream dis =new FileInputStream("Hello.txt");[color=red] //1,抛出异常[/color]       }catch ( Exception ex) {               System.out.println("No such file found");   [color=red]//2.catch捕获异常,并执行[/color]               return -1;                                  [color=red]//4,return 返回[/color]       }finally{               System.out.println("Doing finally");  [color=red]//3.finally一定会执行,在return之前。[/color]       }        return 0;    }}


运行结果:

C:\java>java   Mine
No such file found
Doing finally
-1

运行顺序是1.2.3.4

如果在finnally写入return,则程序到此终止,不在执行4即是不在返回-1


代码二

public class Test {int a;public int amethod() {try {System.out.println("mmmm");//1.此处没有异常,所以不再走catch,return a;   //3.return返回0} catch (Exception ex) {return a;} finally {a++;System.out.println(a); // 2.finally一定会执行,在return之前。此处输出1}}public static void main(String argv[]) {Test m = new Test();System.out.println(m.amethod());}}


运行结果:
mmmm
1
0

热点排行