package com.itheima.sh;
//创建一个TryCatch类,包含一个show()方法
class TryCatch {
public int show(int x) {
// 通过alt+shift+z快捷键捕获异常:
try {
if (x == 0) {
throw new Exception("x是零");
}
// if语句判断异常后立即将异常抛出并由catch捕获,后面同级别代码不再执行
System.out.println("try.....");
x++;
return 1;
} catch (Exception e) {
// 捕获异常后执行catch里的所有语句
System.out.println("捕获异常");
x++;// x=1
return x;// 执行到该语句时会将x(此时x=1)传给return,但由于系统会检测到finally的存在,
// 因此会临时开辟一个空间暂时保存return x;语句,去执行finally内的语句体
} finally {
System.out.println("必须执行");
x++;// 此时x变成2,fianlly语句执行完毕,
// 重新执行catch里return x语句(由于x在变为2之前已经将1赋值到return
// x语句内),此时返回给show()方法的值为1
// 若finally语句体内有return 3;则返回值为3,不再执行行catch里的return x语句
}
}
}
//定义一个FinallyTest测试类,测试运行结果
public class FinallyTest {
public static void main(String[] args) {
//创建一个TryCatch类对象
TryCatch d = new TryCatch();
//调用TryCatch类中的show()方法,并给x赋值0;
int x = d.show(0);
//打印输出语句x
System.out.println(x);
}
}
//创建一个TryCatch类,包含一个show()方法
class TryCatch {
public int show(int x) {
// 通过alt+shift+z快捷键捕获异常:
try {
if (x == 0) {
throw new Exception("x是零");
}
// if语句判断异常后立即将异常抛出并由catch捕获,后面同级别代码不再执行
System.out.println("try.....");
x++;
return 1;
} catch (Exception e) {
// 捕获异常后执行catch里的所有语句
System.out.println("捕获异常");
x++;// x=1
return x;// 执行到该语句时会将x(此时x=1)传给return,但由于系统会检测到finally的存在,
// 因此会临时开辟一个空间暂时保存return x;语句,去执行finally内的语句体
} finally {
System.out.println("必须执行");
x++;// 此时x变成2,fianlly语句执行完毕,
// 重新执行catch里return x语句(由于x在变为2之前已经将1赋值到return
// x语句内),此时返回给show()方法的值为1
// 若finally语句体内有return 3;则返回值为3,不再执行行catch里的return x语句
}
}
}
//定义一个FinallyTest测试类,测试运行结果
public class FinallyTest {
public static void main(String[] args) {
//创建一个TryCatch类对象
TryCatch d = new TryCatch();
//调用TryCatch类中的show()方法,并给x赋值0;
int x = d.show(0);
//打印输出语句x
System.out.println(x);
}
}