Josh'un cevabına oy verdim , ancak listeye bir tane daha eklemek istiyorum:
Bağımsız değişken geçerliyse, System.InvalidOperationException oluşturulmalıdır, ancak nesne, bağımsız değişkenin kullanılmaması gereken bir durumdadır.
MSDN'den Alınan Güncelleme :
InvalidOperationException, yöntem çağırma başarısızlığının geçersiz bağımsız değişkenler dışındaki nedenlerden kaynaklandığı durumlarda kullanılır.
Diyelim ki nesnenizde PerformAction (enmSomeAction eylemi) yöntemi var, geçerli enmSomeActions Açık ve Kapalı. PerformAction (enmSomeAction.Open) öğesini arka arkaya iki kez çağırırsanız, ikinci çağrı InvalidOperationException özel durumunu (argüman geçerli olduğu için, ancak denetimin geçerli durumu için değil) atmalıdır.
Zaten defansif olarak programlayarak doğru olanı yaptığınızdan, ObjectDisposedException'dan bahsetmem gereken bir istisna daha var. Eğer senin nesne uygular sonra ıdisposable her zaman elden çıkarılan durumunu izleme Bir sınıf değişkeni sahip olmalıdır; nesneniz atılmışsa ve üzerinde bir yöntem çağrılmışsa, ObjectDisposedException öğesini yükseltmelisiniz:
public void SomeMethod()
{
If (m_Disposed) {
throw new ObjectDisposedException("Object has been disposed")
}
// ... Normal execution code
}
Güncelleme: İzleminizi cevaplamak için: Bu, belirsiz bir durumdur ve belirli bir veri kümesini temsil etmek için kullanılan genel (.NET Generics anlamda değil) veri türü tarafından biraz daha karmaşık hale getirilmiştir; bir enum veya diğer güçlü bir şekilde yazılmış bir nesne daha ideal bir uyum olacaktır - ancak her zaman bu kontrole sahip değiliz.
Şahsen ArgumentOutOfRangeException doğru yalın ve geçerli değerleri 1-12 olduğunu gösteren bir ileti sağlar. Benim gerekçem aylar hakkında konuştuğunuzda, ayların tamsayı temsillerinin geçerli olduğunu varsayarak, 1-12 aralığında bir değer beklediğinizdir. Sadece belirli aylar (31 güne sahip aylar gibi) geçerli olsaydı, o zaman aralık başına bir aralıkla uğraşmazsınız ve geçerli değerleri belirten genel bir ArgumentException atardım ve bunları yöntemin yorumlarında da belgeleyeceğim.