我想知道在我的.NET方法可以基於提供的參數和當前對象狀態拋出兩個或多個異常中的一個的情況下遵循什麼最佳實踐。哪個異常應該優先,我如何確定?如果.NET方法有選擇,應該拋出哪個異常?
對於一般情況下的答案會是最好的,但這裏有一個例子來說明我的問題:
假設我有一個接受一個對象參數的方法。此參數不能爲空,因爲它具有需要爲方法執行工作而調用的屬性或方法。在這種情況下可能引發ArgumentNullException
。
另外假設我的方法是在一個類上,它的實例首先需要處於特定的狀態才能使該調用有效。如果他們不是,那麼InvalidOperationException
可能會在這裏拋出。
現在考慮在類實例也處於無效狀態時使用null參數調用方法的情況。我應該拋出哪個例外,ArgumentNullException
或InvalidOperationException
?爲什麼?