黑马程序员技术交流社区
标题:
如何让finally中的语句不执行?
[打印本页]
作者:
乔玉吉
时间:
2012-3-11 01:12
标题:
如何让finally中的语句不执行?
public class Test
{
public static void main(String args[])
{
try
{
return;
}
finally
{
System.out.print("1");
}
}
}
作者:
冯旭君
时间:
2012-3-11 01:32
在输出语句之前加上System.exit(0);
即:
public class Test {
public static void main(String args[]) {
try {
return;
} finally {
System.exit(0);
System.out.print("1");
}
}
}
作者:
许圣建
时间:
2012-3-11 01:35
不用很麻烦啊,在finally那句打印语句之前加return;就OK了,不过这样就不会再执行try的return了。
作者:
王睿
时间:
2012-3-11 01:47
好像只有关掉JVM才行
作者:
付鹏
时间:
2012-3-11 02:25
不可能的事情。。fianlly本来就是总会被执行的, 再说了 你不想让他执行不写就是了,你写了不让他执行有什么意义呢?
作者:
刘豪杰
时间:
2012-3-11 02:40
当你捕获到异常的时候,在处理异常的时候你完全可以System.exit(0);命令虚拟机,在执行异常处理的时候,虚拟机都退出了,又怎么能执行finally块中的代码呢。所以,在finally前边的代码中加入System.exit(0),那么代码在执行到System.exit(0)时就退出了虚拟机,后边finally里边的代码也就不执行了,这个问题在第七届论坛里边提到过,你可以进第七届论坛里边找下
作者:
刘雷冲
时间:
2012-3-11 09:18
本帖最后由 刘雷冲 于 2012-3-11 11:17 编辑
try {
return;
System.out.print("2");
} finally {
System.exit(0);
System.out.print("1");
}
复制代码
注:楼主可以打个断点试一下执行过程
作者:
王杰
时间:
2012-3-11 09:18
public class Test {
public static void main(String args[]) {
try {
System.exit(0);
return;
}
finally {
System.out.print("1");
}
}
}
复制代码
作者:
lucky_xingxing
时间:
2012-3-11 09:23
你想让finally里的语句不执行 那么你为什么要写呢? 既然你不想让她执行 最好的办法就是不写即可,毕竟 finally是可有可无的,你这样写了又不想让他执行岂不是自找麻烦了么
作者:
baypm_jy
时间:
2012-3-11 11:22
在catch执行一个后面加一句:System.exit(0);或者不加:finally语句!
作者:
baypm_jy
时间:
2012-3-11 11:29
package 异常;
import java.util.*;
public class exception {
public static void main(String[] args){
System.out.println("请输入一到三之间的数字");
Scanner in=new Scanner(System.in); 这里如果输入一个a的话,后面就不会执行了
int Code1 =in.nextInt();
try{
switch(Code1){
case 1:
System.out.println(".Net");
break;
case 2:
System.out.println("java");
break;
}
}
catch(Exception ex){
System.out.println("输入不为数字");
}
finally{
System.out.println("出错了");
}
}
}
int code1=it.nextInt()就出错了,
Scanner in=new Scanner(System.in);
int Code1 =in.nextInt();
要把这两行也放到try{}中。
作者:
蒋安国
时间:
2012-3-11 12:07
解决方法是在finally的第一条语句中加上System.exit(0);
不用很麻烦啊,在finally那句打印语句之前加return;就OK了,不过这样就不会再执行try的return了。
这样也上可以的,不过try语句有三种呢,无需故意这样的,发生异常要么抛,要么try,如果你try了,但你要是不处理的话就要抛了啊。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2