[英]Should I handle/catch these exceptions?
以下例外情況可能非常相似:
ArgumentException
ArgumentNullException
InvalidOperationException
ObjectDisposedException
。
InvalidOperationException
是一個非常模糊和廣泛的異常,因為它意味着一個方法嘗試了由於 state 而無法執行的操作(例如,啟動一個可能無法啟動的 win svc)。作為一般規則,您應該盡可能拋出最具體的異常。 這為消費者提供了處理/理解異常的最佳機會。
例如,
InvalidOperationException 非常廣泛,當更具體的選項不適合時,通常用作包羅萬象。
這完全取決於你在做什么。 除了 ObjectDisposedException(您應該留給運行時處理)之外,所有這些都可以在適當的情況下拋出。
您是否期望其中一些會發生,然后通過各種方式抓住它們並適當地處理這種情況。
大多數自制的方法參數驗證器(通常命名為 Guard、Arguments 等)在 arguments 無效的情況下會拋出這些異常:
我相信 MSDN 對何時拋出此類異常有非常詳細的描述,
當調用方法並且傳遞的 arguments 至少有一個不符合被調用方法的參數規范時,將引發ArgumentException 。 ArgumentException 的所有實例都應帶有描述無效參數的有意義的錯誤消息,以及參數的預期值范圍。
當調用方法並且傳遞的 arguments 中的至少一個是 null 但絕不應該是 null 時,將引發ArgumentNullException 。
InvalidOperationException用於由於無效 arguments 以外的原因導致方法調用失敗的情況。 例如,InvalidOperationException 由以下引發:
- 如果在創建枚舉器后修改了集合的對象,則 MoveNext。
- GetString 如果資源集在方法調用之前關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.