我很確定我已經知道答案,但我仍然好奇在Try,Catch,Finally塊內處理錯誤的意見是什麼 - 但是當你重複自己。拋出異常VS返回錯誤,嘗試,捕捉,最後
順便說一句 - 我不是在談論用戶輸入 - 但使用一個例子,因爲它是明確的,短
考慮這段代碼...
try {
if (success) {
return someSuccessMessage;
}
else {
logError("User input not correct format");
return someErrorMessage; // repeats itself
}
}
catch (Exception ex) {
logError(ex.Message);
return someErrorMessage; // repeats itself
}
說我們有一個函數,如果它失敗了,我們想返回一個錯誤信息,因爲這個異常是不相關的 - 我們的函數沒有成功,用戶也不需要任何額外的細節。
我一直認爲,如果你能處理錯誤,避免這種例外 - 因爲它不再是例外,但我想知道關於避免重複自己的觀點......你可以做以下,以避免重複自己......
try {
if (success) {
return someSuccessMessage;
}
else {
throw new Exception("User input not correct format");
}
}
catch (Exception ex) {
logError(ex.Message);
return someErrorMessage;
}
這是不是最好的例子,但我會爲了簡潔,使重複碼點。
例外情況會導致性能損失,但對於這種情況有什麼想法?
這是一個經典的控制流濫用例子的例子,這裏討論[爲什麼不使用異常作爲正常的控制流?](http://stackoverflow.com/q/729379/2444725) – Lightman 2015-10-30 10:36:58