关于异常返回值和递归的一点思考

1.异常返回值

我们知道异常的框架如:

try{
   //异常代码
}catch() {

}finally{
  
}

 代码是最好的说明:

public class ExpRetVal {

	public static int func() {
		try{
			throw new Exception(){};
		}catch(Exception e) {
			return 0;
		}finally {
			return 1;
		}
	}
	public static void main(String[] args) {
		System.out.println(func());
	}
}

 在catch中我捕获异常,返回0,然后我在finally我返回1,到底返回0还是1?返回值可以覆盖吗?

输出是1,很有意思,结论告诉我们返回值是可以覆盖的。

finally总是在return之前被执行,如果finally中返回值,就直接返回。

2.递归的一点点思考

有这样的情况,给出一个包名(例如org.ljh.reflect,此处给出包名org),我要遍历包下所有的.class文件,如果找到我就返回一个true,说明有这个类的字节码,然后我通过反射实例化这个类。凑合着看下伪代码:

	public boolean exist(String packageName) {
		if("在这个包找到了") {
			return true;
		}else{
			exist("当前包名");
		}
		return false;
	}

 结果不确定了,可能是true,也可能是false,这就是因为递归引起的覆盖,怎么解决,通过静态成员变量的方式(静态成员变量在类范围,不在对象范围,每个对象共享):

	static boolean isExist = false;
	
	public boolean exist(String packageName) {
		if("在这个包找到了") {
			isExist = true;
		}else{
			exist("当前包名");
		}
		return isExist;
	}

 

 初学者发帖,大牛勿喷,不足之处多多指正。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值