Saya ingin menggunakan: ArgumentException, ArgumentNullException, dan ArgumentOutOfRangeException.
Ada opsi lain juga, yang tidak terlalu fokus pada argumen itu sendiri, tetapi menilai panggilan secara keseluruhan:
InvalidOperationException- Argumennya mungkin OK, tetapi tidak dalam keadaan objek saat ini. Kredit jatuh ke STW (sebelumnya Yoooder). Pilih jawabannya juga.
NotSupportedException- Argumen yang disahkan valid, tetapi tidak didukung dalam implementasi ini. Bayangkan klien FTP, dan Anda memberikan perintah bahwa klien tidak mendukung.
Caranya adalah dengan melemparkan pengecualian yang paling baik mengungkapkan mengapa metode ini tidak dapat disebut apa adanya. Idealnya, pengecualian harus dirinci tentang apa yang salah, mengapa itu salah, dan bagaimana cara memperbaikinya.
Saya suka ketika pesan kesalahan menunjuk ke bantuan, dokumentasi, atau sumber daya lainnya. Misalnya, Microsoft melakukan langkah pertama yang baik dengan artikel KB mereka, misalnya "Mengapa saya menerima pesan kesalahan" Operasi dibatalkan "ketika saya mengunjungi halaman Web di Internet Explorer?" . Ketika Anda menemukan kesalahan, mereka mengarahkan Anda ke artikel KB di pesan kesalahan. Yang tidak mereka lakukan dengan baik adalah bahwa mereka tidak memberi tahu Anda, mengapa secara khusus itu gagal.
Terima kasih kepada STW (ex Yoooder) lagi untuk komentarnya.
Menanggapi tindak lanjut Anda, saya akan melempar ArgumentOutOfRangeException. Lihatlah apa yang dikatakan MSDN tentang pengecualian ini:
ArgumentOutOfRangeExceptiondilemparkan ketika metode dipanggil dan setidaknya salah satu argumen yang diteruskan ke metode ini bukan referensi nol ( Nothingdalam Visual Basic) dan tidak mengandung nilai yang valid.
Jadi, dalam hal ini, Anda memberikan nilai, tetapi itu bukan nilai yang valid, karena rentang Anda adalah 1–12. Namun, cara Anda mendokumentasikannya memperjelas, apa yang dilemparkan API Anda. Karena walaupun saya mungkin mengatakan ArgumentOutOfRangeException, pengembang lain mungkin mengatakan ArgumentException. Permudah dan dokumentasikan perilakunya.