我有以下代碼:捕獲異常,添加數據,並重新拋出
try
{
OnInitialize();
}
catch (PageObjectLifecycleException exception)
{
exception.OldLifecycleState = CurrentLifecycleState;
exception.RequestedLifecycleState = LifecycleState.Initialized;
throw exception;
}
我捕捉異常,更多的數據添加到它,並重新拋出。 ReSharper的警告我(正確地)一個重新拋出可能是打算和建議其更改爲:
throw;
但我想知道:這是否會正確地重新拋出修改異常或未經修改的原始一個?
編輯:作爲對「嘗試它並看到」的迴應:我是C#的新手,來自C++。在C++中,你經常會在像這樣的角落案例中發現未定義的行爲,而且我感興趣的是我想要的究竟是它的正式工作方式。
試一試,看看會發生什麼? – 2012-02-27 15:31:36
它會重新引用任何引用指向 - 在你的情況下修改「異常」。 – 2012-02-27 15:31:59