java - 为什么 try catch 中的 return 语句与 'throws' 一起工作

标签 java spring

不起作用(编译错误:缺少返回语句)

public SqlMapClientTemplate getSqlTempl() throws UivException, SQLException{
    try {
        SqlMapClient scl = (SqlMapClient) ApplicationInitializer.getApplicationContext().getBean("MySqlMapClient");
        DataSource dsc = (DataSource) ServiceLocator.getInstance().getDataSource(PIH_EIV_ORCL);
        return new SqlMapClientTemplate (dsc, scl);
    }
    catch (NamingException ne)
    {
        log.error(ne.getMessage(), ne);
    }
}

作品:

public SqlMapClientTemplate getSqlTempl() throws UivException, SQLException{
    try {
        SqlMapClient scl = (SqlMapClient) ApplicationInitializer.getApplicationContext().getBean("MySqlMapClient");
        DataSource dsc = (DataSource) ServiceLocator.getInstance().getDataSource(PIH_EIV_ORCL);
        return new SqlMapClientTemplate (dsc, scl);
    }
    catch (NamingException ne)
    {
        log.error(ne.getMessage(), ne);
        throw new SQLException("Unable to get database connection: " + ne.getMessage());
    }
}

为什么?

最佳答案

在第一种情况下,该方法在 catch block 之后或 catch block 内不返回任何内容。

在第二种情况下,catch block 抛出异常,因此编译器知道该方法将返回一个对象或抛出异常。

关于java - 为什么 try catch 中的 return 语句与 'throws' 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685120/

相关文章:

java - 结果集移动到第一个记录

java - 使用 javax.mail 通过 SSL 连接使用 Imap 接收电子邮件

java - 预先注册可调用参数错误

java - 无法在拦截器中正确读取请求正文 - Spring BOOT 2.0.4

java - 如何将 Spring 4 与 Apache Tiles 3 集成?

java - 按需预加载

java - 无法使用 javac 和 lombok 在控制台中编译 .h 文件。错误 : package lombok does not exist

java - 双迭代器循环

java - 导入org.springframework无法解决

java - 普罗米修斯错误 : Collector already registered that provides name: http_client_requests_count