2009-12-11 17 views
0

我應該經常使用try catch塊,我如何確定何時何地我最需要的?當它被作爲中小規模部門業務應用程序的正常實踐抓住時,應該如何處理異常?還有一個免費的工具可以幫助我找到重構代碼或代碼,這對於重構食物鏈來說是理想的嗎?我有ReSharper,這很棒,但我需要一些東西來幫助我分析需要重構的東西。我需要嘗試捕捉使用,異常處理和重構建議

謝謝。

+0

我建議花一些時間閱讀MSDN上的最佳實踐建議:例外設計指南 http://msdn.microsoft.com/en-us/library/ms229014.aspx 這不是頻率問題,但是以有意義的和合適的方式使用它們。 –

回答

7

Try..catch blocks應該只在修復錯誤時使用,在重新拋出之前執行清理(即數據庫回滾)或在頂級catch中崩潰前記錄異常。

你不應該默默地吞下例外 - 從您的應用程序這一點可能是不一致的狀態,你不能信任它。最好用記錄信息來解決問題。考慮使用微軟的崩潰報告服務以用於調試和統計目的。

0

嗯,有3個規則處理異常的時候,我總是作爲最佳實踐使用:

  • 捕獲異常儘可能接近到會拋出異常
  • ONLY捕捉異常的代碼,當你真的可以處理它。這隻涉及真正特定類型的例外。千萬不要發現你在正常代碼中無法處理的異常,因爲這對你沒有好處。
  • 有一個全球性的異常處理程序來捕獲所有異常我無法處理,用於記錄異常,並關閉應用程序。
2

我只趕上我的異常時,我可以做一些有意義的他們。 讓一般異常冒泡到應用程序級別並在那裏處理它。這個你應該把try ... catch塊左右,你已經確定了異常行爲可能發生的代碼,這樣你可以有你的錯誤處理在記錄一個位置等

0

你知道如何處理。正如你已經確定的行爲,這些應該針對特定的例外。他們不應該被用來抑制錯誤。

在高位把try..catch塊,如果你想記錄異常是很有用的。日誌4 .Net是一個很好的工具。在一家中等規模的公司,您可能希望在發生異常時向某人發送電子郵件,或將其存儲在數據庫中。

1

只有在您要對catch部分做一些有用的事情時,才能使用try-catch。如果你所要做的只是釋放資源,你可以使用try-finally(是的......沒有捕獲)。默認的異常處理是拋出它。所以,也許你想記錄它然後扔掉它。

你的代碼看起來應該像

try{ 
... //do something 
} 
catch(Exception e){ 
//log first 
throw 
} 
finally{ 
//free up resources. 
} 

工具聰明......你最好還是考慮一下類模式的代碼和類重構它。這應該更多地是設計考慮因素,而不是事後的想法。