62,625
社区成员
发帖
与我相关
我的任务
分享class FinallyTest
{
public static void main(String[] args) {
System.out.println(FinallyTest.test());;//一个语句后边可以跟多个分号,只有分号的语句就是空语句,所以不影响编译和运行。
//System.out.println(new FinallyTest().test());;
}
static int test()
{
int x = 1;
try
{
x++;
return x;
}
finally
{
++x;
}
//System.out.println("----------------");
//return ++x;
}
}
class test {
public static void main(String[] args) {
new FinallyTest().test(0);
System.out.println("------------------");
new FinallyTest().test(1);
}
}
class FinallyTest {
public void test(int a) {
try {
int i = 0 / a;
return ;
} catch (Exception ex) {
System.err.println("程序异常了!");
} finally {
System.out.println("执行finally!");
}
System.out.println("执行finally后面的语句!");
}
} 
class FinallyTest
{
public static void main(String[] args) {
System.out.println(FinallyTest.test());;//一个语句后边可以跟多个分号,只有分号的语句就是空语句,所以不影响编译和运行。
//System.out.println(new FinallyTest().test());;
}
static int test()
{
int x = 1;
try
{
x++;
int result = x;
return result;
}
finally
{
++x;
}
//System.out.println("----------------");
//return ++x;
}
}
第二个程序,开始传入0,会出现异常,然后进入catch 块,打印错误,最后执行最后的打印语言
然后传入1,不会出异常,所以不进入异常打印语言,但是在 try 里执行返回语句,所以后面的打印语言不再执行
static int test()
{
int x = 1;
try
{
x++;
return x;
}
finally
{
++x;
}
//System.out.println("----------------");
//return ++x;
}
这个程序不管有没有异常在finally块执行完以后都会返回,所以最后面的System.out.println是不会执行到的。
class FinallyTest {
public void test(int a) {
try {
int i = 0 / a;
return ;
} catch (Exception ex) {
System.err.println("程序异常了!");
} finally {
System.out.println("执行finally!");
}
System.out.println("执行finally后面的语句!");
}
}
这个程序如果没有异常,在执行完finally块之后就结束了,不会执行最后面System.out.println.
如果有异常,在执行return语句之前就会跳到catch块,之后执行finally块,最后执行System.out.println("执行finally后面的语句!");
