2011-03-21 14 views
6

我接手一個不完整的項目,我絕對不信道的每一個功能是包裹着的try-catch語句在這同一格式:MSVS C#刪除try-catch塊的最快方法?

try 
{ 
    // work work. 
} 
catch(Exception ex) 
{ 
    MessageBox.Show(ex.Message, ...); 
} 

正如我SO搜索的方法來快速刪除所有這些試戴catch塊,我發現人們實際上正在尋找方法來自動包裝他們的功能與try-catch!嗯......是不是很好的編程習慣?是否有方法可以刪除所有塊,以便調試更容易,並讓我真正解決異常?

+0

我不得不這樣做一次......我的解決方案是一個8小時的複製/粘貼900+次的strech,將{throw;}添加到它們的最後並重新測試整個事情。娛樂時間。 – asawyer 2011-03-21 12:58:36

回答

7

你可以在這裏更改選項:

Debug -> Exceptions -> CLR Exceptions -> Check the "Thrown" checkbox. 

這會導致編譯打破時拋出一個異常,檢查任何catch塊之前。

+0

+1 - 請注意,這隻意味着您將在調試器中捕獲異常,而不是被程序壓制 - 它不會「永久」禁用異常處理。 – 2011-03-21 13:08:55

+0

這實際上很有幫助。謝謝!是的,但也想像傑森所說的那樣停用。 – Jake 2011-03-21 13:58:16

2

這是一個可怕的編程習慣。我曾經把這看作是一個混亂了某人數據庫的bug。

這是我堅定的意見,你最好讓你的程序死於一個火熱的死亡比在一個未知的狀態下無意識地繼續。

我會做一個查找和替換MessageBox.Show(exthrow //MessageBox.Show(ex並全部替換它們。你將不得不手動找到那些真的應該在那裏並把它們放回去。

2

Visual Studio的正則表達式搜索功能非常強大,但是使用起來有點棘手,下面是您在搜索上面的代碼時可能會覺得有用的東西:(注意在查找對話框的選項部分選擇「用途:正則表達式「)

會發現你的壞漁獲:

抓* \ N +:b + {[:b \ N] 的MessageBox。:*}

如果你想要做一個有扔直替換[B \ n]:

抓\ N {\ nthrow; \ n}

0

我發現了一個針對VB.NET的解決方案。

替換此:

\s(?<!End)Try((.|\r\n)+?)Catch(.|\r\n)+?(Finally((.|\r\n)+?)End Try|End Try)

...這一點:

$1$5

而留下它會刪除整個try/catch塊只什麼在嘗試和最後阻止。但是它不適用於嵌套try/catches,所以你需要首先替換嵌套塊,然後再替換外部塊。

+0

在合法處理異常的地方刪除try-catch並不是一個好主意。 – Aaroninus 2016-02-11 13:13:57

相關問題