對於我正在處理的應用程序,我的一位隊友一直在處理一個通用錯誤處理程序,該處理程序在我們的某個系統進入時執行一些報告給我們的團隊一個特殊的狀態,處於相對較高的水平。但是,幾個星期前,我在低級別(特別是數據庫訪問)編寫了一些代碼,提供了一些通知。隨着該團隊成員的高級代碼的出現,團隊的其他成員認爲我們可以安全地移除我的try/catch系統。隨後的命令執行成功捕獲到更高級別的異常
一個問題:從此特定存儲庫方法返回的數據結構上有一個IsSuccessful
標誌。當異常發生時,這個標記維持虛假的(成功的數據採集,標誌設置爲true。)
所以,就目前而言,我的代碼看起來是這樣的:
public FooResult Foo()
{
FooResult result = new FooResult { IsSuccessful = false };
SqlParameter[] args = new []
{
// Some args, immaterial to the situation.
}
try
{
DataSet ds = SqlHelper.ExecuteDataset(_connection, CommandType.Text, query, args);
result = new FooResult
{
IsSuccessful = true,
// ...Other fields are set...
};
}
catch
{
result.IsSuccessful = false;
throw; // Per request
}
return result;
}
導致到我的問題:拋出一個異常並在更高級別處理後,會發生什麼?我的代碼是否會回落到停止的位置,或者是否在其他地方恢復執行?當出現問題並在不同的層次上清理時,代碼繼續往哪裏走?
你和bash.d都給出了很好的答案,但我接受了他,因爲他只提供了更多的信息。儘管非常感謝您花時間回答! – 2013-04-03 20:31:28