【发布时间】:2011-12-04 21:21:19
【问题描述】:
这是一个通用编程问题,与任何特定语言无关。
新程序员通常会编写一个计算某个值的方法,然后返回该值:
public Integer doSomething()
{
// Calculate something
return something;
}
public void main()
{
Integer myValue = doSomething();
}
但是当something的计算过程中出现异常时,处理异常的最佳方式是什么,尤其是在给用户反馈的时候?如果您尝试/捕获something 的计算并且如果捕获到异常,您会返回什么?没有计算任何东西,所以你返回 null 吗?一旦你返回它(不管它是什么),你是否需要在父方法中再次尝试/捕获来检查是否返回了有效值?如果没有,那么确保给用户一些反馈?
我在表格的两边都听到过关于从不返回值的争论,而是将计算值设置为指针或全局变量,而是只从方法返回错误代码,然后(在父方法中)简单地处理相应的错误代码。
对此是否有最佳实践或方法?是否有任何好的资源可供人们访问以了解有关处理此问题的最佳方法的更多信息?
更新说明
考虑以下代码:
public void main()
{
int myValue = getMyValue();
MyUIObject whatever = new MyUIObject();
whatever.displayValue(myValue); // Display the value in the UI or something
}
public Integer getMyValue()
{
try
{
// Calculate some value
} catch (exception e) {
// ??
}
return value;
}
我调用该方法来获取一些 int 值,然后返回它。回到main(),我对这个值做了一些事情,比如在这种情况下在日志中显示它。通常我会在 UI 中为用户显示该值。
无论如何,如果在getMyValue() 中捕获到异常,那么value 是否会返回但它为空?那么main() 会发生什么?我是否也必须测试它是否是 main() 中的有效值?
我需要程序相应地处理错误并继续。下面有人建议通过getMyValue() 方法在 UI 中显示适当的信息。我发现了两个潜在问题:
- 似乎我会将业务逻辑与(在这种情况下)UI 逻辑混合在一起。
- 我必须将
MyUIObject的引用传递给getMyValue()或其他东西,这样我才能从函数中访问它。在上面的简单示例中,这没什么大不了的,但如果有一堆 UI 元素需要根据getMyValue()中发生的情况进行更新或更改,那么将它们全部传递可能有点多......李>
我已经阅读了很多关于这一切的基础知识,但我似乎无法为上述情况找到一个直接的答案。我感谢任何帮助或见解。
【问题讨论】:
-
这是什么语言?那么,我们可以为您提供更具体的参考。
标签: exception exception-handling error-handling error-code