异常处理中常见的面试题安利

异常处理中常见的面试题安利

1.概念辨析题
final/finalize/finally的区别:
final;是一个修饰符,修饰类(不能被继承).方法(不能被重写).变量(不能修改值)
finalize:是Object中声明的一个方法,表示有GC调用,在对象被回收之前
finally:是try…catch结构中的一部分,无论异常是否发生,finally中的语句块一定会执行.

2.结果判断题

所含的知识点为当return和finally同时出现时,程序的运行结果.

先直接来看代码;

/**
 * 
 */
package per.leiyustudy.throwable;

/**
 * @author 雷雨
 *
 */
public class TestReturnFinally {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		System.out.println(getNum());

	}
	public static int getNum() {
		int i = 10;
		try {
			i = 20;
			return i;
			
		} catch (Exception e) {
			i = 30 ;
		    return i;
		}finally {
			i = 40;
			return i;
		}
		    
	}

}

分析这段代码的运行结果.
在这里插入图片描述
再来看

/**
 * 
 */
package per.leiyustudy.throwable;

/**
 * @author 雷雨
 *
 */
public class TestReturnFinally {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		System.out.println(getInt());

	}
	public static int getInt() {
		int i = 10;
		try {
			i = 20;
			return i;
			
		} catch (Exception e) {
			i = 30 ;
		    return i;
		}finally {
			i = 40;
			
		}
		    
	}
}

分析这段代码的运行结果:
在这里插入图片描述
关于为什么会出现这样的情况,其实并不难理解,在return和finally同时出现时,有两种情况
1.在finally中有return,那么结果就返回finally中的
2.在finally中没有return,那么结果就是try和catch中的

特别注意:在实际开发过程中,一般在finally中是没有return的,因为如果finally中有return语句,那么try和catch中的return就没有作用,一般在开发的过程中,finally中一般只写一些关于资源释放,资源回收的代码.

发布了64 篇原创文章 · 获赞 15 · 访问量 2454

猜你喜欢

转载自blog.csdn.net/qq_40742223/article/details/104717869