如何在出現未捕獲異常的情況下調試try {...} finally{...}
中的finally
塊?似乎無論我如何處理異常設置或調試器,Visual Studio都不會讓我繼續執行try
塊中拋出的異常點,以便調試finally
代碼。如何在Visual Studio中調試finally塊?
這裏的一個代表,短例如:
public static void Main()
{
var instrument = new Instrument();
try
{
instrument.TurnOnInstrument();
instrument.DoSomethingThatMightThrowAnException();
throw new Exception(); // Visual Studio won't let me get past here. Only option is to hit "Stop Debugging", which does not proceed through the finally block
}
finally
{
if(instrument != null)
instrument.TurnOffInstrument();
}
}
上下文:我具有控制用於拍攝電子測量在實驗室一些硬件工具,例如一個程序可編程的PSU。如果出現問題,我希望它快速失效:首先關閉儀器以防止可能的物理損壞,然後退出。關閉它們的代碼位於finally塊中,但我無法調試此代碼在錯誤情況下的工作方式。我不想嘗試處理任何可能的錯誤,只需將儀器關閉,然後關閉程序。也許我正在以這種錯誤的方式去做?
有你把'finally'塊中的一行斷點? – hometoast
你能告訴我們一個你的代碼的小例子嗎?如果你想捕獲所有異常而不用擔心它們被捕獲,那麼你將需要爲'Exception'類添加一個catch塊。 –
作爲一個側面說明,我並不認爲使用PC來例如PWM控制一個H橋。 任何異常情況,或只是交換,死鎖等等,你可能會停下來打開MOSFET/IGBT。 當然,這可能會也可能不像您的使用案例。 – Victor