try catch finally详解
来源:互联网 发布:软件双开工具 编辑:程序博客网 时间:2024/05/16 14:11
先假设try catch finally整块叫A块
1、try块:A块程序的入口,有异常执行第2步,否则第3步
2、catch块:主要用于捕获try块中抛出的异常,并进行处理
3、finally块:A块的必须执行体,有些资料说finally是A块的最终执行体,这并不准确,假如try块中有个return,那finally执行完之后会返回到try块中
A块程序有个结束体,finally块就是在结束体之前强行调用运行。
??下面的方法会返回什么值
1private static String getStr(){
2 String str = "abc";
3 try{
4 return str;
5 }finally{
6 str += "def";
7 }
8}
程序运行到第4行,这就是A块结束体,此时跳到finally中执行,这时的str=“abcdef”,
但是执行第4行的时候,return str已经将str=“abc”压入函数栈中,所以此方法返回的还是“abc”
A块有一种可能的情况下不执行finally
关于A块的递归调用会产生这种现象 如:
private static void test() {
try {
System.out.println("a--");
test();
} catch (Throwable e) {
System.out.println("b--");
test();
} finally {
System.out.println("c--");
test();
}
}
这里A块的执行取决于机器了,假如内存足够大,程序会不断递归执行try块中的语句,一段时间不会执行finally,
内存不够时抛出异常,就会执行catch,遇到结束体又会执行finally,也许你在程序中随便加一段能编译通过的代码,运行又是另一种情况,这里就比较复杂了
1、try块:A块程序的入口,有异常执行第2步,否则第3步
2、catch块:主要用于捕获try块中抛出的异常,并进行处理
3、finally块:A块的必须执行体,有些资料说finally是A块的最终执行体,这并不准确,假如try块中有个return,那finally执行完之后会返回到try块中
A块程序有个结束体,finally块就是在结束体之前强行调用运行。
??下面的方法会返回什么值
1private static String getStr(){
2 String str = "abc";
3 try{
4 return str;
5 }finally{
6 str += "def";
7 }
8}
程序运行到第4行,这就是A块结束体,此时跳到finally中执行,这时的str=“abcdef”,
但是执行第4行的时候,return str已经将str=“abc”压入函数栈中,所以此方法返回的还是“abc”
A块有一种可能的情况下不执行finally
关于A块的递归调用会产生这种现象 如:
private static void test() {
try {
System.out.println("a--");
test();
} catch (Throwable e) {
System.out.println("b--");
test();
} finally {
System.out.println("c--");
test();
}
}
这里A块的执行取决于机器了,假如内存足够大,程序会不断递归执行try块中的语句,一段时间不会执行finally,
内存不够时抛出异常,就会执行catch,遇到结束体又会执行finally,也许你在程序中随便加一段能编译通过的代码,运行又是另一种情况,这里就比较复杂了
0 0
- try catch finally详解
- try catch finally详解
- try/catch/finally详解+示例
- try catch finally 语句详解
- try-catch-finally-return问题详解
- JAVA try、catch、finally的执行详解
- java try...catch...finally机制详解
- try-catch-finally-return问题详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- java try、catch、finally及finally执行顺序详解
- 【转】java try、catch、finally及finally执行顺序详解
- try..catch..finally
- try-catch-finally
- SQL数据库操作
- OpenGL中的FBO
- 单点登录SSO系列文章集合
- klob AS系列教程第二集【将工作区从Eclipse搬到AndroidStudio上】
- [YZOI1171]割项的小变形
- try catch finally详解
- 林建:计算机专业学习浅谈
- 有关与技术规划中的注意事项
- nyoj1071 不可以!
- C++中怎样读取文件一行数据
- 利用OpenCV进行图像伽马校正
- linux下配置TFTP和NFS服务的方法
- [多图预警详细演示一步一步写算法导论]插入排序
- 测试用例预演