Saya tidak melihat banyak perbedaan antara kekhawatiran tentang penanganan pengecualian dan penebangan karena keduanya merupakan masalah lintas sektoral. Bagaimana menurut anda? Bukankah itu harus ditangani secara terpisah sendiri daripada disisipkan dengan logika inti metode yang diterapkan?
EDIT : Apa yang saya coba katakan, adalah bahwa menurut saya implementasi metode seharusnya hanya berisi logika untuk jalur eksekusi yang sukses dan pengecualian harus ditangani di tempat lain. Ini bukan tentang pengecualian yang dicentang / tidak dicentang.
Misalnya, bahasa mungkin menangani pengecualian dengan cara yang sepenuhnya diperiksa dengan menggunakan konstruksi seperti ini:
class FileReader {
public String readFile(String path) {
// implement the reading logic, avoid exception handling
}
}
handler FileReader {
handle String readFile(String path) {
when (IOException joe) {
// somehow access the FileInputStram and close it
}
}
}
Dalam bahasa konseptual di atas, program tidak akan dikompilasi dengan tidak adanya FileReader
handler , karena readFile FileReader
kelas tidak melempar pengecualian. Jadi dengan mendeklarasikanFileReader
handler , kompiler dapat memastikan bahwa ia sedang ditangani dan program kemudian mengkompilasi.
Dengan cara ini kami memiliki yang terbaik dari masalah pengecualian diperiksa dan tidak dicentang: ketahanan dan keterbacaan.