2009-04-27 81 views
1

如果我正在編寫一個類庫,並且在該庫中的某個位置有代碼來捕獲異常並處理它,那麼我不希望任何人使用我的庫來知道它甚至發生了 - 它應該是從外部世界看不見。但是,如果他們在Visual Studio中打開「Catch Thrown Exceptions」(而不是「Catch User Unhandled Exceptions」),那麼的例外對它們可見。如何防止異常在C#中冒泡?

有什麼辦法可以避免這種情況?

回答

2

要解決這個問題,唯一的方法是如果您將[DebuggerHidden]屬性放在可能會拋出問題的方法上例外。像其他人指出的那樣,完全避免這種異常,但是這個屬性會達到你想要的。

+0

謝謝 - 通過這個上Project White中的人員,這樣在每次調用UI Automation代碼時都不會看到異常,這會破壞被調用的對象。 – 2009-04-27 15:38:40

7

編號這是設計的:作爲一名開發人員,我開啓了「Catch Thrown Exceptions」,以便我可以看到庫代碼中拋出的異常(並希望避免它們)。你所處的情況也同樣適用於.NET框架自己的庫。

最好的方法是避免在第一個地方拋出異常。作爲一個附帶的好處,你的庫代碼將會更快,因爲拋出一個異常會對性能產生顯着的影響(並且只能在'特殊'情況下使用)。

0

你不能阻止這個。有人可以隨時附加一個debuger到進程並監視正在發生的事情。

您可以刪除異常並自己提供錯誤處理,但我不會建議這樣做,因爲它是某種重新發明輪子 - 重新創建異常處理系統。

只有在代碼拋出和捕獲異常的代碼相距很遠且未完全釋放時,上述說法才適用。如果他們緊密耦合,你應該確認呼叫是否可以成功,並且只能在這種情況下進行呼叫。總是記住這個例外是針對特殊情況的 - 不適用於可以檢查操作是否可以成功的正常控制流程