标签: try-catch-finally

finally块总是在Java中执行吗?

考虑到这一点的代码,我可以绝对肯定的是,finally块总是执行,不管something()是什么?

try {  
    something();  
    return success;  
}  
catch (Exception e) {   
    return failure;  
}  
finally {  
    System.out.println("I don't know if this will get printed out");
}
Run Code Online (Sandbox Code Playgroud)

java return try-catch-finally

2281
推荐指数
38
解决办法
48万
查看次数

如果finally块抛出异常会发生什么?

如果finally块抛出异常,究竟会发生什么?

具体来说,如果在finally块的中途抛出异常会发生什么.是否调用了此块中的其余语句(之后)?

我知道异常会向上传播.

c# exception-handling exception try-catch-finally

257
推荐指数
5
解决办法
6万
查看次数

为什么尝试{...}最终{...}好; 试试{}}抓住{}不好?

我见过有人说使用不带参数的catch是不好的形式,特别是如果catch没有做任何事情:

StreamReader reader=new  StreamReader("myfile.txt");
try
{
  int i = 5 / 0;
}
catch   // No args, so it will catch any exception
{}
reader.Close();
Run Code Online (Sandbox Code Playgroud)

但是,这被认为是好的形式:

StreamReader reader=new  StreamReader("myfile.txt");
try
{
  int i = 5 / 0;
}
finally   // Will execute despite any exception
{
  reader.Close();
}
Run Code Online (Sandbox Code Playgroud)

据我所知,将清理代码放在finally块中并在try..catch块之后放置清理代码之间的唯一区别是,如果你的try块中有return语句(在这种情况下,最后清理代码将是运行,但try..catch之后的代码不会).

否则,最后有什么特别之处?

.net c# exception-handling try-catch try-catch-finally

196
推荐指数
7
解决办法
9万
查看次数

@try - 在Objective-c中捕获块

为什么@try阻止工作?它崩溃了应用程序,但它应该被@try块捕获.

 NSString* test = [NSString stringWithString:@"ss"];

 @try {
    [test characterAtIndex:6];

 }
 @catch (NSException * e) {
    NSLog(@"Exception: %@", e);
 }
 @finally {
    NSLog(@"finally");
 }
Run Code Online (Sandbox Code Playgroud)

iphone objective-c try-catch-finally nsexception

189
推荐指数
2
解决办法
14万
查看次数

从Java中的finally块返回

最近我惊讶地发现在Java中的finally块中可以有一个return语句.

似乎很多人认为这样做是不好的,如' 不要在最终条款中返回 '中所描述的那样.更深入地抓了一下,我还发现' Java的回归并不总是 ',这显示了最终块中其他类型的流控制的一些非常可怕的例子.

所以,我的问题是,有人能给我一个例子,其中finally块中的return语句(或其他流控制)产生更好/更可读的代码吗?

java return exception try-catch-finally

168
推荐指数
5
解决办法
6万
查看次数

从try catch finally块中返回是不好的做法吗?

所以今天早上我遇到了一些看起来像这样的代码:

try
{
    x = SomeThingDangerous();
    return x;
}
catch (Exception ex)
{
    throw new DangerousException(ex);
}
finally
{
    CleanUpDangerousStuff();
}
Run Code Online (Sandbox Code Playgroud)

现在这段代码编译得很好并且可以正常工作,但是从try块中返回它感觉不对,特别是如果最终有关联的话.

我的主要问题是如果最终抛出它自己的例外会发生什么?你有一个返回的变量,但也有一个例外来处理...所以我有兴趣知道其他人在try块中返回的想法?

c# try-catch try-catch-finally

126
推荐指数
5
解决办法
7万
查看次数

Java Try Catch Finally块没有Catch

我正在审查一些新代码.该程序只有一个try和一个finally块.由于catch块被排除在外,如果遇到异常或任何可抛出的东西,try块如何工作?它只是直接进入finally块吗?

java finally try-catch try-catch-finally try-finally

118
推荐指数
5
解决办法
13万
查看次数

'finally'总是在Python中执行吗?

对于Python中任何可能的try-finally块,是否可以保证finally块总是被执行?

例如,假设我在一个except块中返回:

try:
    1/0
except ZeroDivisionError:
    return
finally:
    print("Does this code run?")
Run Code Online (Sandbox Code Playgroud)

或许我重新提出一个Exception:

try:
    1/0
except ZeroDivisionError:
    raise
finally:
    print("What about this code?")
Run Code Online (Sandbox Code Playgroud)

测试显示finally上面的例子确实执行了,但我想还有其他我没有想过的场景.

是否有任何情况下finally块无法在Python中执行?

python exception-handling finally try-catch-finally

116
推荐指数
4
解决办法
2万
查看次数

为什么`finally`中的返回覆盖`try`?

try/catch块中的return语句如何工作?

function example() {
    try {
        return true;
    }
    finally {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待这个功能的输出true,但它是false!

javascript return try-catch try-catch-finally try-finally

81
推荐指数
5
解决办法
4万
查看次数

为什么在catch之后使用finally而不是代码

为什么这样呢

} catch (SQLException sqle) {
    sqle.printStackTrace();
} finally {
    cs.close();
    rs.close();
}
Run Code Online (Sandbox Code Playgroud)

而不是这个

} catch (SQLException sqle) {
    sqle.printStackTrace();
}
rs.close();
cs.close();
Run Code Online (Sandbox Code Playgroud)

java try-catch-finally

75
推荐指数
5
解决办法
4万
查看次数