java异常中try或catch语句中可以有return语句吗?如有return会执行finall
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java异常中try或catch语句中可以有return语句吗?如有return会执行finall相关的知识,希望对你有一定的参考价值。
java异常中try或catch语句中可以有return语句吗?如有return会执行finally吗?
try或catch中都可以有return语句,如果遇到return会先执行finally后执行return;只有一种情况特殊,就是代码中有System.exit(1);的存在,return才不会执行追问
如果finally中有return那么是否有多个返回值
追答不可能,finally里有return,则其他return不会被执行
当程序中有多个return时,仅有一个return被执行
当try中有多个return时?执行流程是什么? finally如果有return,那么就不执行其他语句了吗?
追答try内如果有多条return,那要看你的判断语句了,满足不同条件走不同的return
finally本身就是结尾操作,走完try或catch才会执行finally
如果try或catch里有return,则会先执行finally,在执行try或catch中的return
如果此时finally里也有return,则直接返回,不在执行try或catch里的teturn
如果 finally也有 return语句 是不是 执行两次return有两个返回值
追答只会执行finally里的return
解答一下有关JAVA异常类的问题?
(1)是否可以将try…catch语句中catch捕获的异常更改为Exception?(2)是否可以将try…catch语句中catch捕获的异常更改为java.io.IOException?问题参照图中代码,最好能简要说明一下
问题(1)可以改为Exception
问题(2)示情况而定是否可以改为IOException
原因,原语句中的try...catch..的语义是在try里面的两行语句中捕获可能抛出的DangerException异常并加以处理,
(1). Exception是DangerException的父类,替换后语义变为了在try里面的两行语句中捕获可能抛出的Exception异常并加以处理,语义是正确的;
(2). IOException不确定是不是DangerException的父类,替换后语义变为了在try里面的两行语句中捕获可能抛出的IOException异常并加以处理,语义不一定正确,如果IOException是DangerException的父类,就是正确的,否则是错误的(在try里面没有IOException的类型可能被抛出),在编译时会报错(Exception 'java.io.IOException' is never thrown in the corresponding try block)
都不可以.
无论是用Exception,还是用IOException ,直接替换原来代码中的 DangerException ,会报编译错误.因为 DangerException 是一个自定义异常,并且定义了一个toShow()方法,无论是Exception 还是 IOException 类 都是没有这个方法的,所以直接替换是一定会报错的
以上是关于java异常中try或catch语句中可以有return语句吗?如有return会执行finall的主要内容,如果未能解决你的问题,请参考以下文章
请简述JAVA中 try-catch-finally 语句的执行过程 简单明了 好的话 加分(曹苇提问)