Menentukan akhiran Pengecualian pada kelas pengecualian terasa seperti kode bau bagi saya (informasi Redundan - sisa nama menyiratkan keadaan kesalahan dan mewarisi dari Pengecualian). Namun, tampaknya juga semua orang melakukannya dan ini merupakan praktik yang baik.
Saya ingin memahami mengapa ini adalah praktik yang baik.
Saya sudah melihat dan membaca pertanyaan mengapa pengecualian biasanya memiliki pengecualian akhiran dalam nama kelas
Pertanyaannya adalah untuk PHP dan sementara tanggapannya mungkin berlaku untuk Java. Apakah ada argumen lain atau apakah itu benar-benar sesederhana membedakannya secara eksplisit?
Jika kita mengambil contoh dari pertanyaan sebelumnya - mungkinkah ada benar-benar kelas di java dengan nama FileNoFound
yang tidak terkecuali? Jika ada, apakah itu suffix dengan itu Exception
?
Melihat hirarki cepat dalam gerhana Exception
, tentu saja, sebagian besar dari mereka memang memiliki akhiran pengecualian, tetapi ada beberapa pengecualian. javassist
adalah contoh perpustakaan yang tampaknya memiliki beberapa pengecualian tanpa akhiran - misalnya BadByteCode
, BadHttpRequest
dll.
BouncyCastle
adalah lib lain dengan pengecualian seperti CompileError
Saya sudah sedikit mencari di Google dengan sedikit info tentang subjek.
sumber
Exception
sufiks, atau haruskah kita membuat pengecualian untuk pengecualian luar biasa?" ;)FileNotFound
ArrayIndexOutOfBounds
danOutOfMemory
lebih banyak pengamatan / deskripsi, tetapi kemudian diterapkan pada kata bendaException
.Jawaban:
Jawaban Landei adalah jawaban yang bagus, tetapi ada juga jawaban gramatikal. Nama kelas harus berupa kata benda . Apa itu "OutOfMemory"? Apa itu "FileNotFound"? Jika Anda menganggap "Pengecualian" sebagai kata benda, maka deskriptor adalah kata sifat yang menentukannya. Bukan sembarang
Exception
, itu aFileNotFoundException
. Anda tidak perlu menangkapOutOfMemory
lebih daripada pergi ke toko untuk membeli "biru".Ini juga muncul jika Anda membaca kode Anda sebagai kalimat: "
Try
melakukan ..., dancatch OutOfMemory Exceptions
"sumber
OutOfMemory
pengecualian" berbunyi lebih baik dari "Anda akan mendapatkanOutOfMemoryException
pengecualian", bukan?OutOfMemoryException
." Yang mengatakan, kami juga memiliki nomor PIN dan mesin ATM, sehingga pengecualian OOME tidak akan yang tidak biasa.OutOfMemoryException
" saat itu hanya bisa "Anda adalah out of memory"? Kami tidak menggunakanClass
akhiran (DogClass
,CatClass
,XmlReaderClass
, ...).Saya pikir pengecualian (dan kesalahan, dan secara teoritis lainnya
Throwable
) berbeda dari hal-hal seperti antarmuka atau enum (yang biasanya tidak digunakan sebagai akhiran): Mereka biasanya memiliki tujuan yang sangat jelas dan terbatas, mereka digunakan dengan konstruksi bahasa khusus (try
,catch
,throw
,throws
) dan mengikuti aturan khusus (misalnya diperiksa vs pengecualian dicentang, tidak ada obat generik). Di satu sisi mereka bukan hanya kelas yang kebetulan digunakan sebagai pengecualian, tetapi mekanisme pengecualian yang diterapkan dengan cara kelas.Jadi jika Anda berurusan dengan pengecualian dan tidak mengenalinya, biasanya ada sesuatu yang sangat salah (yang lagi-lagi tidak berlaku untuk hal-hal seperti enum atau antarmuka). Jadi saya pikir perbedaan ini untuk kelas "normal" cukup besar untuk meminta petunjuk visual.
sumber
Exception
di Jawa - Anda tidak bisa dalam C #. Jika Anda tidak bisa, maka saya tidak bisa memikirkan skenario di mana Anda akan "berurusan dengan pengecualian dan [tidak] mengenalinya seperti itu".Throwable
s di Java. Namun Anda dapat menangani pengecualian tidak hanya dalamtry
-catch
pengaturan, misalnya Anda dapat mengumpulkan pengecualian ketika Anda membuat semacam validasi untuk objek yang kompleks (ketika Anda ingin mengetahui semua masalah terkait, bukan hanya yang pertama). Dalam kasus seperti itu Anda harus menyadari bahwa Anda dapat misalnya re membuang-hal yang Anda miliki dalam daftar Anda, sehingga akan buruk untuk memanggil mereka yaituValidationIssue
bukanValidationException
.Ya, semua orang memang melakukannya, jadi ini praktik, tetapi apakah masih bagus? Beberapa orang mempertanyakan itu:
sumber