try catch finally一道笔试题

看到一个笔试试卷上考察try catch finally 的题,感觉基本涵盖了考点, 虽然编译时通不过的偷笑

int a = 0;
		
		try {
			
			a=10;
			//某一段业务逻辑,涉及到网络IO
			
			return a;
			
		}catch (IOException e) {
			
			a = 20;
			
			return a;
		}finally{

			a = 30;

		}
		return a;

因为 最后一个 return a;是执行不到的.

请给出:

没有遇到异常时候的结果

遇到IOException异常时候的结果

遇到其他Exception异常 但IOException Catch不到的时候


下面是给出的测试代码,大神请跳过文章,仅供初学者学习之用!!!


package main;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class TestTryCatchFinally {

	/**
	 * finally 中的代码 在try 或者 catch 语句中的 return 之情会被调用
	 * 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		System.out.println("testFinally1()最终返回值a=" + testFinally1());
		
		System.out.println("testFinally11()最终返回值a=" + testFinally11());
		
		System.out.println("testFinally12()最终返回值a=" + testFinally12());
		
		System.out.println("testFinally21()最终返回值a=" + testFinally21());
		
		System.out.println("testFinally22()最终返回值a=" + testFinally22());
		
		System.out.println("testFinally3()最终返回值a=" + testFinally3());
		
	}

	/*
没有遇到异常时候的结果
try-begin
10--in try
try--end
finally-begin
30--in finally
finally-end
10
	 */
	public static int testFinally1(){
		
		int a = 0;
		
		try {
			
			System.out.println("try-begin");
			a=10;
			//某一段业务逻辑,涉及到网络I/O
//			throw new IOException(); 
			System.out.println(a+"--in try");
			System.out.println("try--end");
			
			return a;
			
		}catch (Exception e) {
			
			System.out.println("catch-begin");
			a = 20;
			System.out.println(a+"--in catch");
			System.out.println("catch-begin");
			
//			return a;
		}finally{
			
			System.out.println("finally-begin");
			a = 30;
			System.out.println(a+"--in finally");
			System.out.println("finally-end");
		}
		return a;
	}
	/*
没有遇到异常时候的结果 如果把return 放到了finally中那么无论有没有异常 返回值的都是 finally中的值
try-begin
10--in try
try--end
finally-begin
30--in finally
finally-end
30
	 */
	@SuppressWarnings("finally")
	public static int testFinally11(){
		
		int a = 0;
		
		try {
			
			System.out.println("try-begin");
			a=10;
			//某一段业务逻辑,涉及到网络I/O
//			throw new IOException(); 
			System.out.println(a+"--in try");
			System.out.println("try--end");
			
			return a;
			
		}catch (Exception e) {
			
			System.out.println("catch-begin");
			a = 20;
			System.out.println(a+"--in catch");
			System.out.println("catch-begin");
			
			return a;
		}finally{
			
			System.out.println("finally-begin");
			a = 30;
			System.out.println(a+"--in finally");
			System.out.println("finally-end");
			return a;
		}
		
	}
	/*
没有遇到异常时候的结果
try-begin
10--in try
try--end
finally-begin
30--in finally
finally-end
30
	 */
	public static int testFinally12(){
		
		int a = 0;
		
		try {
			
			System.out.println("try-begin");
			a=10;
			//某一段业务逻辑,涉及到网络I/O
//			throw new IOException(); 
			System.out.println(a+"--in try");
			System.out.println("try--end");
			
//			return a;
			
		}catch (Exception e) {
			
			System.out.println("catch-begin");
			a = 20;
			System.out.println(a+"--in catch");
			System.out.println("catch-begin");
			
//			return a;
		}finally{
			
			System.out.println("finally-begin");
			a = 30;
			System.out.println(a+"--in finally");
			System.out.println("finally-end");
		}
		
		return a;
	}
	
	/*
遇到IOException异常时候的结果 将最下面的 return a 注释掉时
try-begin
catch-begin
20--in catch
catch-begin
finally-begin
30--in finally
finally-end
20
	 */
	public static int testFinally21(){
		
		int a = 0;
		
		try {
			
			System.out.println("try-begin");
			a=10;
			//某一段业务逻辑,涉及到网络I/O
			throw new IOException("IO异常");
//			System.out.println(a+"--in try");
//			System.out.println("try--end");
			
//			return a;
			
		}catch (IOException e) {
			
			System.out.println("catch-begin");
			a = 20;
			System.out.println(a+"--in catch");
			System.out.println("catch-begin");
			
			return a;
		}finally{
			
			System.out.println("finally-begin");
			a = 30;
			System.out.println(a+"--in finally");
			System.out.println("finally-end");
		}
		
//		return a;
	}
	/*   重要级别!
遇到IOException异常时候的结果  未将最下面的 return a 注释掉,二将catch中的 return注释掉时
try-begin
catch-begin
20--in catch
catch-begin
finally-begin
30--in finally
finally-end
30
	 */
	public static int testFinally22(){
		
		int a = 0;
		
		try {
			
			System.out.println("try-begin");
			a=10;
			//某一段业务逻辑,涉及到网络I/O
			throw new IOException("IO异常");
//			System.out.println(a+"--in try");
//			System.out.println("try--end");
			
//			return a;
			
		}catch (IOException e) {
			
			System.out.println("catch-begin");
			a = 20;
			System.out.println(a+"--in catch");
			System.out.println("catch-begin");
			
//			return a;
		}finally{
			
			System.out.println("finally-begin");
			a = 30;
			System.out.println(a+"--in finally");
			System.out.println("finally-end");
		}
		
		return a;
	}
	
	/* 遇到其他Exception异常 但IOException却不能Catch到的时候
try-begin
finally-begin
30--in finally
finally-end
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at main.TestTryCatchFinally.testFinally3(TestTryCatchFinally.java:168)
	at main.TestTryCatchFinally.main(TestTryCatchFinally.java:22)

将try return打开,将catch return 注释 时
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at main.TestTryCatchFinally.testFinally3(TestTryCatchFinally.java:178)
	at main.TestTryCatchFinally.main(TestTryCatchFinally.java:22)
try-begin
finally-begin
30--in finally
finally-end
	 */
	public static int testFinally3(){
		
		int a = 0;
		
		try {
			
			System.out.println("try-begin");
			a=10;
			//某一段业务逻辑,涉及到网络I/O
			int b = a/0;
			FileInputStream is = new FileInputStream(new File("D://mi.txt"));
			System.out.println(a+"--in try");
			System.out.println("try--end");
			
//			return a;
			
		}catch (IOException e) {
			
			System.out.println("catch-begin");
			a = 20;
			System.out.println(a+"--in catch");
			System.out.println("catch-begin");
			
			return a;
		}finally{
			
			System.out.println("finally-begin");
			a = 30;
			System.out.println(a+"--in finally");
			System.out.println("finally-end");
		}
		
		return a;
	}
	
}




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值