这是一个通用的编程问题,与任何特定语言无关。
新程序员通常会编写一个计算某个值的方法,然后返回该值:
public Integer doSomething()
{
// Calculate something
return something;
}
public void main()
{
Integer myValue = doSomething();
}
但是当计算过程中出现异常时something
,处理异常的最佳方法是什么,尤其是在给用户反馈时?如果您对计算进行 try/catchsomething
并且如果捕获到异常,您会返回什么?没有计算任何东西,所以你返回 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
对 thegetMyValue()
或其他东西的引用,以便我可以从函数内部访问它。在上面的简单示例中,这没什么大不了的,但是如果有一堆 UI 元素需要根据发生的情况进行更新或更改,那么getMyValue()
将它们全部传递可能会有点多......
我已经阅读了很多关于这一切的基础知识,但我似乎无法为上述情况找到一个直接的答案。我感谢任何帮助或见解。