2010-07-02 89 views
0

在顯示錯誤消息之前關閉並處理資源是否是一種好的做法?在顯示錯誤消息之前關閉並處理資源?

如果正在捕捉錯誤和你顯示在相同的範圍內的資源,例如數據庫和文件對象的錯誤消息,然後不應這些資源被關閉和處置之前錯誤消息被顯示?

如果您正在等待這些資源退出範圍,那麼只有在錯誤消息對話框關閉後纔會執行此操作。這意味着用戶可能會在屏幕上留下一段時間的錯誤消息,並在此過程中鎖定一些資源。

例如。

try { ... } 
catch (Exception e) { 
    // should close/dispose resources here 
    ... 
    ... 
    MessageBox("Error"); 
} 

回答

0

更好地被投入

using() { } scope 

或使用RAII你的資源,使他們輟學的範圍,他們被正確收拾了消息框被擊中了。

0

你可以嘗試使用finally塊。

http://msdn.microsoft.com/en-us/library/zwc8s4fz.aspx

+0

這是如何解決這個問題?我正在等待某人在錯誤消息對話框中單擊確定。 finally塊只會在這之後執行,不是嗎? – CJ7 2010-07-02 09:10:58

+0

最佳做法是添加到finally塊。 – Simmo 2010-07-02 13:55:42

1

優選地,不顯示在catch塊任何UI。相反,在finally塊中處理資源,但返回一些指示發生錯誤的值,並讓調用方法處理它,如有必要,可使用UI。

其中的一種變化是將finally資源放置在finally塊中,並讓catch塊重新拋出調用方法處理的異常。