Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理lambda中的已检查异常?_Java_Lambda_Java 8_Java Stream_Checked Exceptions - Fatal编程技术网

Java 如何处理lambda中的已检查异常?

Java 如何处理lambda中的已检查异常?,java,lambda,java-8,java-stream,checked-exceptions,Java,Lambda,Java 8,Java Stream,Checked Exceptions,我有以下代码片段 package web_xtra_klasa.utils; import java.util.Arrays; import java.util.Properties; import java.util.function.Function; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport

我有以下代码片段

package web_xtra_klasa.utils;

import java.util.Arrays;
import java.util.Properties;
import java.util.function.Function;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Main {
    public static void main(String[] args) throws Exception {
        Transport transport = null;
        try {
            final Properties properties = new Properties();
            final Session session = Session.getDefaultInstance(properties, null);
            final MimeMessage message = new MimeMessage(session);
            final String[] bcc = Arrays.asList("user@example.com").stream().toArray(String[]::new);
            message.setRecipients(Message.RecipientType.BCC, Arrays.stream(bcc).map(InternetAddress::new).toArray(InternetAddress[]::new));
        } finally {
            if (transport != null) {
                try {
                    transport.close();
                } catch (final MessagingException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}
由于以下错误,此文件无法编译

未处理的异常类型AddressException

我做了一些研究,所有的解决方案都只是将选中的异常包装在运行时异常中的自定义方法中。我想避免为这些东西编写额外的代码。有没有处理此类案件的标准方法

编辑: 到目前为止,我所做的是

message.setRecipients(Message.RecipientType.BCC,
        Arrays.stream(bcc).map(e -> {
            try {
                return new InternetAddress(e);
            } catch (final AddressException exc) {
                throw new RuntimeException(e);
            }
        }).toArray(InternetAddress[]::new));

但是它看起来不太好。我可以发誓,在其中一个教程中,我看到了一些标准的
rethrow
或类似的东西。

您可以使用一些
试试
容器。
有几个已经编写好的实现。例如:


或者您可以自己编写。

您可以使用一些
试试
容器。
有几个已经编写好的实现。例如:


或者你可以自己编写。

不,所有的结果都是关于编写大量额外的代码来捕获检查过的异常,并将其作为运行时异常重新提交。所以你认为,这些开发人员都是为了好玩而这样做的,忽略了在没有额外代码的情况下工作的假设解决方案?不,所有的结果都是关于编写大量额外的代码来捕获检查过的异常并将其作为运行时异常重新提交。所以你认为,这些开发人员都是为了好玩而这样做的,而忽略了在没有额外代码的情况下工作的假设解决方案?