考虑到这一点的代码,我可以绝对肯定的是,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) 我知道如何尝试,捕获和最终工作(大多数情况下),但我有一件事我想知道:在try-catch-finally之后返回语句会发生什么,而我们已经在try(或者catch)中返回了)?
例如:
public boolean someMethod(){
boolean finished = false;
try{
// do something
return true;
}
catch(someException e){
// do something
}
finally{
// do something
}
return finished;
}
Run Code Online (Sandbox Code Playgroud)
假设在尝试中没有出错,所以我们返回true.然后我们将进入最后我们做的事情,比如关闭连接,然后呢?
在我们在finally中做了一些东西之后,方法会停止吗(所以方法在try中返回true),或者方法会在finally之后继续,导致返回完成(这是假的)?
在此先感谢您的回复.
我确定这个问题之前已经被问过了,但是在谷歌搜索之后我找不到任何东西.
这是我的情况,我有多个线程写入文件,一个主线程创建一个打印编写器并处理创建文件并关闭try/catch循环中finally块内的print writer.当我在eclipse中运行应用程序时,我会按下stop/terminate按钮,文件没有写入任何内容.我想确保我在这里做的一切都是正确的,或者在执行终止时有更好的方法来处理关闭打印编写器.哎呀,如果有更好的方法来处理多个线程写入文件,我很欢迎这个建议(我现在对多线程编程非常糟糕).
最后一天,我接受了一次采访,他们问我java问题,其中一些问题我不知道答案.我很想知道这个问题的答案.采访者没有告诉我答案.我在这里问这个问题:
想知道上述问题的答案,以便下次可以帮助我.
只需简单的答案,我们就会非常感谢对规范的说明,注释和/或相关链接 - 以及学习这些东西的好方法是什么?
我正在努力 My application's under maintanace module
try {
if (isUndermaintanace) {
System.exit(1);
} else {
prepareResources();
}
} catch (Exception e) {
printStack(e);
} finally {
cleanResources();
}
Run Code Online (Sandbox Code Playgroud)
当我通过 isundermaintanace true 最后没有执行.
我错过了什么?还有其他办法吗?
try {
if (check) {
while (true) ;
} else {
System.exit(1);
}
} finally {
clear();
}
Run Code Online (Sandbox Code Playgroud)
问:有clear()没有永远不会被执行的情况?我个人觉得没有clear()不会执行的情况。
我试图理解当我最终在while循环中使用时的机制.在下面的代码中.在最后的行打印和比休息时间.我期待代码不会到达finally块.或者,如果它到达finally块,那里就没有中断,所以while应该继续..任何人都可以解释这是如何工作的?
while(true){
System.out.println("in while");
try{
break;
}finally{
System.out.println("in finally");
}
}
System.out.println("after while");
Run Code Online (Sandbox Code Playgroud)
输出是
in while
in finally
after while
Run Code Online (Sandbox Code Playgroud) 给定的java代码不会进入finally块,我认为无论如何都应该执行这些块:
public static void main(String[] args) {
try {
System.out.println("Hello world");
System.exit(0);
} finally {
System.out.println("Goodbye world");
}
}
Run Code Online (Sandbox Code Playgroud) 如果我有以下代码
try{
//some code
}catch(Exception e){
//some code
}finally{
}
Run Code Online (Sandbox Code Playgroud)
在以下情况下,finally块会发生什么
如果发生任何已检查的异常
如果调用System.exit().
如果发生任何未经检查的异常
如果发生任何错误.
java ×9
return ×2
break ×1
eclipse ×1
finally ×1
printwriter ×1
system.exit ×1
try-catch ×1
try-finally ×1
while-loop ×1