Saya baru di Jawa dan sedang membaca dokumentasinya tentang pengecualian. , dan khususnya Pengecualian yang Tidak Dicentang - Halaman Kontroversi .
Intinya mengatakan:
Jika klien secara wajar diharapkan pulih dari pengecualian, jadikan itu pengecualian terkecuali. Jika klien tidak dapat melakukan apa pun untuk memulihkan dari pengecualian, jadikan itu pengecualian yang tidak dicentang.
Saya tidak mengerti artikelnya. Tentang apa "kontroversi" itu? Bisakah Anda menjelaskannya dengan kata-kata sederhana?
java
api-design
exceptions
ABcDexter
sumber
sumber
Jawaban:
Saya akan memberi Anda contoh pertama (tetapi pada akhirnya adalah jawaban mengapa kontroversi).
Mari kita misalkan Anda mengedit dokumen dalam editor dokumen berbasis Java dan setelah Anda selesai Anda memilih File-> Save as ... dan Anda memilih untuk menyimpan dokumen ke dalam volume yang Anda tidak memiliki izin menulis. Editor tidak akan crash pada Anda dengan stacktrace jelek, itu hanya akan memberi tahu Anda bahwa itu tidak dapat menyimpan file dan itu akan membiarkan Anda terus mengedit dan / atau menyimpan ke lokasi lain.
Dalam kasus seperti itu, mungkin pengecualian yang dicentang diharapkan, ditangkap, dan ditindaklanjuti untuk memulihkannya.
Di sisi lain, anggap saja ini sebuah divisi dengan nol atau pengecualian pointer nol yang disebabkan oleh kesalahan pemrograman yang memundurkan kepala jeleknya hanya dalam kondisi tertentu. Itu bisa terjadi di mana saja dalam kode, RAM dapat rusak, dll. Tidak ada API API akan memberitahu Anda "metode ini akan membuang pembagian dengan nol jika RAM rusak" .
Pengecualian yang diperiksa harus menjadi bagian dari desain dan pengguna API itu harus bersiap untuk menanganinya. Pengecualian yang tidak diperiksa dapat terjadi hampir di mana-mana dan berada di luar kendali kami.
Kontroversi muncul dari pemrogram menggunakan pengecualian yang tidak dicentang (memanjang dari RuntimeException) ketika mereka harus menggunakan pengecualian yang diperiksa:
sumber
Tidak ada kontroversi di halaman itu. Oracle memberitahu orang untuk menggunakan pengecualian yang diperiksa.
'Kontroversi' palsu yang mereka temukan di sini adalah antara perancang bahasa dan pengguna bahasa. Para desainer mengizinkan orang untuk melempar dan menangkap benda-benda yang (dalam pikiran mereka) tidak boleh dibuang atau ditangkap. Jadi mereka membuat halaman web yang mengeluh tentang pengembang yang malas.
sumber