Misalnya, banyak metode dalam framework / JDK yang mungkin dilontarkan
java.lang.SecurityException
tetapi ini tidak ditunjukkan dalam tanda tangan metode (karena itu adalah praktik yang biasanya disediakan untuk pengecualian yang dicentang). Saya ingin menyatakan bahwa mendeklarasikan RuntimeExceptions di metode sigs memiliki banyak manfaat (mirip dengan pemeriksaan tipe statis misalnya). Apakah saya mabuk atau sebaliknya?
sumber
Dari tutorial Oracle Java :
sumber
Lihat javadoc untuk Collection # add
Ada banyak sekali pengecualian yang tidak dicentang yang disebutkan:
Throws: UnsupportedOperationException - add is not supported by this collection. ClassCastException - class of the specified element prevents it from being added to this collection. NullPointerException - if the specified element is null and this collection does not support null elements. IllegalArgumentException - some aspect of this element prevents it from being added to this collection.
Jika Anda memiliki kesabaran, saya sarankan untuk mendokumentasikan secara menyeluruh kemungkinan pengecualian yang diberikan oleh metode Anda dengan cara ini. Di satu sisi, bahkan lebih penting untuk melakukan ini untuk pengecualian yang tidak dicentang, karena pengecualian yang dicentang agak terdokumentasi sendiri (kompilator memaksa kode pemanggil untuk mengakuinya).
sumber
throws
di tanda tangan metode. Ini bukanlah hal yang sama. Ya, Anda benar - benar harus mendokumentasikan semua pengecualian yang diberikan oleh API Anda, tetapi pertanyaannya bukan tentang itu.Dalam sudut pandang saya, lebih baik mendeklarasikan pengecualian waktu proses setidaknya di javadoc untuk metode tersebut. Mendeklarasikannya dalam tanda tangan semakin memperjelas apa yang mungkin terjadi jika terjadi kesalahan. Ini adalah alasan utama saya menyarankan untuk memberikan informasi ini.
FYI: seiring berjalannya waktu (sekarang di tahun 2017) saya sekarang lebih condong untuk mendokumentasikannya dalam javadoc saja dan menghindari pengecualian yang dicentang sebanyak mungkin.
sumber
Dalam pandangan saya, pengecualian yang tidak dicentang tidak boleh dideklarasikan dalam tanda tangan metode karena bertentangan dengan sifatnya.
Namun, jika suatu metode cenderung menampilkan beberapa pengecualian yang tidak dicentang, yang mencatat kemungkinan keadaan di @throws di Javadoc dapat membantu orang lain yang menggunakan metode tersebut untuk memahami apa yang bisa salah. Ini hanya berguna untuk pengecualian yang kemungkinan besar dapat ditangani oleh penelepon (seperti NPE karena input yang buruk, dll.)
sumber
Jika Anda menulis api untuk digunakan oleh orang lain, maka ada banyak alasan untuk dokumentasi eksplisit maksud Anda dalam api dan tidak ada kerugian untuk mendeklarasikan RuntimeExceptions dalam tanda tangan metode.
sumber
Ini ada hubungannya dengan diskusi tentang pengecualian yang dicentang . Sebagian besar akan setuju bahwa pengecualian tidak boleh dideklarasikan dalam tanda tangan metode.
Ada juga diskusi tentang bagaimana pengecualian waktu proses harus digunakan. Saya setuju dengan satu poster bahwa pengecualian waktu proses harus menunjukkan kesalahan pemrograman atau kondisi fatal. Jadi tidak banyak gunanya menyatakannya dalam tanda tangan. Setiap metode berpotensi melalui satu.
sumber