首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在try块中返回是一种好的做法吗?

在try块中返回是一种好的做法吗?
EN

Stack Overflow用户
提问于 2013-04-04 00:26:53
回答 5查看 2.8K关注 0票数 3

我很好奇在try块中使用return语句的最佳实践。

我有一个调用服务方法的方法,该方法返回一个整数,并可能抛出IllegalArgumentException。有两种方法可以做到这一点。

首先:

代码语言:javascript
运行
复制
public int getLookupStatus(String lookupType)
{
    try
    {
        return this.lookupService.getCountOfLookupRecords(lookupType);
    }
    catch(IllegalArgumentException ex)
    {
        throw new RestException();
    }
}

第二:

代码语言:javascript
运行
复制
public int getLookupStatus(String lookupType)
{
    int count;

    try
    {
        count = this.lookupService.getCountOfLookupRecords(lookupType);
    }
    catch(IllegalArgumentException ex)
    {
        throw new RestException();
    }

    return count;
}

在第二种方法中,count变量似乎没有必要,但第一种方法由于某种原因在我看来是错误的。有什么特别的理由让你偏爱其中一个吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-04 00:33:27

try块中返回值没有任何错误,如果引发了IllegalArgumentException (或任何其他RuntimeException),您甚至不会从该方法返回任何内容,程序的正常执行流程将因该异常而改变。

第二个示例中的模式用于catch块中使用/实例化的资源需要关闭的情况下,然后在finally子句中正确处理此问题。

票数 3
EN

Stack Overflow用户

发布于 2013-04-04 00:33:26

我喜欢第一个版本,因为它看起来更具可读性。此外,如果引发了异常,那么这也没有关系,因为控制无论如何都会退出该方法。

我使用第二种模式的唯一原因是,如果我想在返回之前对返回值做一些操作。

另外,如果不处理IllegalArgumentException,您的代码可能会更好。在调用方法之前,应该有一种方法来验证参数。

票数 0
EN

Stack Overflow用户

发布于 2013-04-04 00:34:24

这两种方法都会产生相同的结果,如果没有抛出错误或异常,两种方法都会返回值。

但我更喜欢第一个,更容易阅读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15792857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档