相关疑难解决方法(0)

抛出异常的Java 8 Lambda函数?

我知道如何创建对具有String参数并返回一个方法的方法的引用int,它是:

Function<String, Integer>
Run Code Online (Sandbox Code Playgroud)

但是,如果函数抛出异常,这不起作用,比如说定义为:

Integer myMethod(String s) throws IOException
Run Code Online (Sandbox Code Playgroud)

我该如何定义这个参考?

java lambda java-8

438
推荐指数
14
解决办法
28万
查看次数

Java 8:在lambda表达式中强制检查异常处理.为什么强制,不是可选的?

我正在使用Java 8中的新lambda特性,并发现Java 8提供的实践非常有用.但是,我想知道是否有一种很好的方法可以解决以下情况.假设您有一个对象池包装器,需要某种工厂来填充对象池,例如(使用java.lang.functions.Factory):

public class JdbcConnectionPool extends ObjectPool<Connection> {

    public ConnectionPool(int maxConnections, String url) {
        super(new Factory<Connection>() {
            @Override
            public Connection make() {
                try {
                    return DriverManager.getConnection(url);
                } catch ( SQLException ex ) {
                    throw new RuntimeException(ex);
                }
            }
        }, maxConnections);
    }

}
Run Code Online (Sandbox Code Playgroud)

将函数接口转换为lambda表达式后,上面的代码变为:

public class JdbcConnectionPool extends ObjectPool<Connection> {

    public ConnectionPool(int maxConnections, String url) {
        super(() -> {
            try {
                return DriverManager.getConnection(url);
            } catch ( SQLException ex ) {
                throw new RuntimeException(ex);
            }
        }, maxConnections); …
Run Code Online (Sandbox Code Playgroud)

java lambda checked-exceptions java-8

69
推荐指数
4
解决办法
4万
查看次数

在Java中的Rethrow异常

关于在Java中重新抛出异常,我有一个非常简单的问题.

这是代码片段:

public static void main(String[] args) throws FileNotFoundException {
    try {
        FileReader reader = new FileReader("java.pdf");
    } catch (FileNotFoundException ex) {
        throw ex;
    }
}

public static void main(String[] args) throws FileNotFoundException {        
        FileReader reader = new FileReader("java.pdf");        
}
Run Code Online (Sandbox Code Playgroud)

为什么我们需要重新抛出ex第一个版本,而第二个版本看起来更优雅?什么可能是好处,哪个版本比另一个更受欢迎?

java exception-handling exception

10
推荐指数
3
解决办法
2万
查看次数