当前位置: 首页 > 知识库问答 >
问题:

为什么我必须用try/cacth[duplicate]来包围

沈华皓
2023-03-14

我有方法

private void writeObject(ObjectOutputStream oos) throws IOException 

在正文中,我编写了一些HashMap的键集

        for(E e : map.keySet()) {
        oos.writeObject(e);
    }

看起来还可以,但如果我想重复这个代码

map.forEach((k, v) -> oos.writeObject(k));

我得用try/catch来包围它。像这样

        map.forEach((k, v) -> {
        try {
            oos.writeObject(k);
        } catch (IOException e) {
            e.printStackTrace();
        }
    });

我不明白为什么

共有1个答案

黎曾笑
2023-03-14

这是因为forEach()将Consumer作为参数。并且不声明Consumer会抛出任何已检查的异常。因此您的lambda也应该是使用者,并且不抛出任何检查异常。因此任何检查的异常都应该在lambda体中捕获。

 类似资料:
  • 关于在最新版本的GCC和Clang中编译有几个问题:实验::filessystems链接器错误 但是现在< code>filesystem已经被c 17接受,所以不再需要< code>experimental或< code>-lstdc fs标志,对吗? 错了,我甚至不能 只给了我< code >实验版本,我怎么能包括正式接受的版本呢?

  • 根据文档,newInstance()返回一个T:https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#newInstance() 所以,如果我有一个返回T的方法,为什么我必须强制转换构造函数的返回。newInstance()到T?

  • 问题内容: 我创建了一个用于显示工具提示的指令: 对应功能: 应用于此: 这是我观点的一部分,由拥有者的控制器处理 为什么必须调用才能将更改应用到,该更改是早先声明和初始化的? 问题答案: 因为附加到事件的回调超出了angular的范围;angular不知道该函数何时运行/结束,因此摘要循环永远不会运行。 调用或告诉angular更新绑定并触发任何手表。

  • 问题陈述 输入格式 有三行输入: 第一行包含一个整数。 第二行包含double。 第三行包含字符串。 null 为了使问题更容易,编辑器中已经提供了一部分代码。 注意:如果您在nextInt()方法之后立即使用nextLine()方法,请回想一下nextInt()读取整数令牌;因此,这一行整数输入的最后一个换行符仍在输入缓冲区中排队,下一个nextLine()将读取整数行的剩余部分(为空)。 样本

  • C++20概念的一个特点是,在某些情况下,您必须编写。例如,[expr.prim.req]/3中的这个示例:

  • 我知道不同的平台有不同的UI需求,但为什么我必须下载源代码并自己编译它呢?为什么我不能为我的平台下载一个可运行的版本?