Saya pikir Anda berada di jalur yang benar. Baik melempar, menangkap, atau mendokumentasikan semua pengecualian yang berpotensi dibuang sangat masuk akal. Ada saat-saat di mana keketatan produk membutuhkan tingkat pengecualian pekerjaan dan dokumentasi yang lebih tinggi (misalnya aspek kritis keselamatan tertentu dari suatu sistem).
Strategi menjadi lebih defensif, menggunakan konsep kontrak untuk mengidentifikasi prasyarat (dan pascakondisi) pada penelepon hilir (misalnya apa pun yang menyerupai anggota publik atau yang dilindungi) sering kali akan lebih efektif dan lebih fleksibel. Ini tidak hanya berlaku untuk implementasi, tetapi juga untuk dokumentasi. Jika pengembang tahu apa yang diharapkan, mereka lebih cenderung mengikuti aturan dan kecil kemungkinannya akan bingung atau menyalahgunakan kode yang Anda tulis.
Beberapa hal umum yang harus didokumentasikan termasuk kasus parameter nol. Seringkali ada konsekuensi untuk penggunaannya yang mendorong hasil ke sesuatu yang biasanya tidak diharapkan, tetapi diizinkan dan digunakan untuk berbagai alasan, kadang-kadang untuk fleksibilitas. Sebagai konsumen anggota yang memiliki parameter yang memungkinkan nilai nol, atau khusus, non-rasional lainnya (seperti waktu negatif, atau jumlah negatif), saya berharap melihatnya diidentifikasi dan dijelaskan.
Untuk parameter non null, sebagai konsumen anggota publik atau yang dilindungi, saya ingin tahu bahwa nol tidak diperbolehkan. Saya ingin tahu apa kisaran nilai yang valid dalam konteks yang diberikan. Saya ingin tahu konsekuensi dari penggunaan nilai yang berada di luar rentang normal, tetapi dinyatakan valid dalam konteks panggilan yang berbeda (misalnya nilai tipe umumnya berlaku untuk operasi apa pun, tetapi tidak di sini - seperti parameter boolean yang tidak dapat mengharapkan false sebagai nilai yang valid.
Sejauh platform, atau antarmuka terkenal, saya tidak berpikir Anda harus pergi ke ekstrim dalam mendokumentasikannya. Namun, karena Anda memiliki kesempatan sebagai pengembang untuk memvariasikan implementasi dari panduan platform apa pun, catat bagaimana mengikuti panduan tersebut yang mungkin bernilai.
Khusus untuk IDisposable, seringkali implementasi antarmuka ini menawarkan metode alternatif yang lebih disukai daripada proses pembuangan eksplisit. Dalam kasus ini, sorot metode yang disukai, dan perhatikan bahwa pembuangan eksplisit tidak disukai.