为什么finally块写return会报错

为什么finally块写return会报错

我在catch和try都能写,但写在try块就报错,而如果我只在try块写return,出了异常方法try catch finally块之外的语句也能输出,不是很懂为什么

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学,你好!不知道你的代码是什么样子的,按照下面代码这样写return是不会报错的。建议同学贴出你的代码看一下。

http://img1.sycdn.imooc.com//climg/5d44021e000159d603740358.jpg

另外,下面这个问题:

try块里写了return,但如果抛出了异常,try catch finally块后面的写的语句也能正常输出

如果抛出了异常,finally里的语句是可以正常执行的,在后面的数据库课程中会多次用到这种使用方式。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 慕UI5285863 提问者 #1
    老师,不是finally里的语句,是finally之外的语句也能正常输出
    2019-08-02 18:12:17
  • 慕UI5285863 提问者 #2
    我应该明白了,try里抛出了异常,下一句的return就被无视了,所以能直接输出语句之外的语句
    2019-08-02 18:19:59
好帮手慕珊 2019-08-02 19:47:49

你好!你的理解是对的。在如下所示的代码中,如果a.txt文件不存在,就会发生异常,此时就会执行catch块中的代码,然后执行finally和finally后的代码。

public class Test1 {
public static void main(String[] args) {
try {
FileInputStream fis=new FileInputStream("a.txt");
return;
}catch(Exception e) {
e.printStackTrace();
}finally {
System.out.println("ok");
}
System.out.println("ok1");
}
}

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 慕UI5285863 2019-08-02 14:20:11

我这个问题是问我在finally写return会报错,这是为什么
还有try块里写了return,但如果抛出了异常,try catch finally块后面的写的语句也能正常输出

提问者 慕UI5285863 2019-08-02 13:35:54

老师在吗,还没解答

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师