這是一個通用的編程問題,不涉及任何特定的語言。返回值與返回錯誤代碼?
一個新的程序員通常會寫,計算某個值的方法,然後返回值:
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。 –