这是一个通用的编程问题,不涉及任何特定的语言。返回值与返回错误代码?
一个新的程序员通常会写,计算某个值的方法,然后返回值:
public Integer doSomething()
{
// Calculate something
return something;
}
public void main()
{
Integer myValue = doSomething();
}
但当something
计算过程中发生异常,什么是处理异常的最佳方式特别是在提供用户反馈时?如果您尝试计算something
,并且发现异常,您会返回什么结果?没有什么计算,所以你返回null?一旦你返回它(不管它是什么),你是否需要在父方法中做另一个try/catch来检查是否返回了有效值?如果没有,那么确保用户得到一些反馈?
我已经听到关于永远不会返回值的表的参数,而是将计算值设置为指针或全局变量,而是仅从方法返回错误代码,然后(在父方法中)仅处理相应的错误代码。
是否有最佳做法或方法呢?有没有什么好的资源可以让我们更好地了解处理这个问题的最佳方法?
更新澄清
考虑下面的代码:
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()
,我做了一些有价值的事情,比如在本例中的Log中显示它。通常我会在用户界面中显示该值。
不管怎么说,如果在getMyValue()
中发现异常,value
也会返回,但它是空的?那么main()
会发生什么呢?我是否还必须测试main()
中的有效值?
我需要程序来相应地处理错误并继续。下面的人建议在getMyValue()
方法中在UI中显示适当的信息。我看到两个潜在的问题:
- 看来我将混合业务逻辑与(在这种情况下)用户界面的逻辑。
- 我将不得不将
MyUIObject
的引用传递给getMyValue()
,或者我可以从函数内部访问它。在上面这个简单的例子中,没有什么大不了的,但是如果有一组UI元素需要更新或者根据getMyValue()
发生的变化进行更改,传递它们都可能有点多...
我读过一堆关于所有这些基本原理的文章,但似乎无法找到上述情况的直接答案。我感谢任何帮助或见解。
这是什么语言?然后,我们可以给你更具体的参考。 – jwd
你可以假装它是Java。 –