我很好奇在try块中使用return语句的最佳实践。
我有一个调用服务方法的方法,该方法返回一个整数,并可能抛出IllegalArgumentException。有两种方法可以做到这一点。
首先:
public int getLookupStatus(String lookupType)
{
try
{
return this.lookupService.getCountOfLookupRecords(lookupType);
}
catch(IllegalArgumentException ex)
{
throw new RestException();
}
}
第二:
public int getLookupStatus(String lookupType)
{
int count;
try
{
count = this.lookupService.getCountOfLookupRecords(lookupType);
}
catch(IllegalArgumentException ex)
{
throw new RestException();
}
return count;
}
在第二种方法中,count变量似乎没有必要,但第一种方法由于某种原因在我看来是错误的。有什么特别的理由让你偏爱其中一个吗?
发布于 2013-04-04 00:33:27
在try
块中返回值没有任何错误,如果引发了IllegalArgumentException
(或任何其他RuntimeException
),您甚至不会从该方法返回任何内容,程序的正常执行流程将因该异常而改变。
第二个示例中的模式用于catch块中使用/实例化的资源需要关闭的情况下,然后在finally
子句中正确处理此问题。
发布于 2013-04-04 00:33:26
我喜欢第一个版本,因为它看起来更具可读性。此外,如果引发了异常,那么这也没有关系,因为控制无论如何都会退出该方法。
我使用第二种模式的唯一原因是,如果我想在返回之前对返回值做一些操作。
另外,如果不处理IllegalArgumentException
,您的代码可能会更好。在调用方法之前,应该有一种方法来验证参数。
发布于 2013-04-04 00:34:24
这两种方法都会产生相同的结果,如果没有抛出错误或异常,两种方法都会返回值。
但我更喜欢第一个,更容易阅读。
https://stackoverflow.com/questions/15792857
复制相似问题