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

参考技术A 可以,finally一定会执行。追问

如果 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)

参考技术A

都不可以.

无论是用Exception,还是用IOException ,直接替换原来代码中的 DangerException ,会报编译错误.因为 DangerException 是一个自定义异常,并且定义了一个toShow()方法,无论是Exception 还是 IOException 类 都是没有这个方法的,所以直接替换是一定会报错的

以上是关于java异常中try或catch语句中可以有return语句吗?如有return会执行finall的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中try catch捕获异常的问题

解答一下有关JAVA异常类的问题?

java中try 与catch的使用?

请简述JAVA中 try-catch-finally 语句的执行过程 简单明了 好的话 加分(曹苇提问)

Java异常处理机制:try...catch...的执行流程

java之try catch finally