Pengecualian vs Kesalahan
Perilaku yang tidak terduga pasti akan terjadi ketika suatu program sedang berjalan. Ini bisa disebabkan oleh pengecualian atau kesalahan. Pengecualian adalah peristiwa, yang dapat mengganggu aliran program normal. Kesalahan adalah kondisi yang dapat dianggap tidak dapat dipulihkan. Pengecualian sebagian besar terkait dengan aplikasi itu sendiri, sementara kesalahan terkait dengan sistem di mana program sedang berjalan.
Apa itu Pengecualian?
Pengecualian adalah suatu peristiwa, yang dapat mengganggu aliran program normal. Pengecualian nama berasal dari "peristiwa luar biasa". Melempar pengecualian adalah proses menciptakan objek pengecualian dan menyerahkannya ke sistem runtime. Objek pengecualian dibuat dengan metode di mana pengecualian terjadi. Objek pengecualian berisi informasi yang bermanfaat seperti jenis dan deskripsi pengecualian. Ketika sistem runtime menerima objek pengecualian, itu akan mencoba untuk menemukan seseorang untuk menanganinya di dalam tumpukan panggilan dengan melintasi itu dalam urutan terbalik (di mana metode dipanggil). Tumpukan panggilan adalah daftar metode yang diurutkan, yang dipanggil sebelum metode di mana pengecualian terjadi. Sistem runtime berhasil jika menemukan metode dengan handler pengecualian. Handler pengecualian adalah blok kode yang secara resmi dapat menangani pengecualian tersebut. Jika sistem runtime menemukan penangan yang sesuai (yaitu jenis pengecualian cocok dengan jenis yang dapat ditangani), itu akan meneruskan objek pengecualian ke penangan. Ini disebut menangkap pengecualian. Namun, jika pengecualian tidak dapat ditangani, program akan berakhir. Di Jawa, pengecualian mewarisi dari 'kelas Throwable.' NullPointerException dan ArrayIndexOutOfBoundsException adalah dua pengecualian umum di Jawa.
Apa itu Kesalahan?
Kesalahan adalah suatu kondisi yang dapat dianggap tidak dapat dipulihkan seperti program yang membutuhkan jumlah memori lebih besar dari apa yang tersedia. Kesalahan ini tidak dapat ditangani saat runtime. Jika terjadi kesalahan, program akan berakhir. Di Jawa, kesalahan mewarisi dari kelas Throwable. Kesalahan biasanya merupakan masalah serius yang tidak boleh ditangkap oleh programmer (atau aplikasi). Kesalahan hanyalah kondisi abnormal, yang tidak pernah diharapkan terjadi dalam keadaan normal, dan karenanya tidak pernah diramalkan. Sebagai contoh, OutOfMemoryError, StackOverflowError dan ThreadDead adalah kesalahan seperti itu. Metode seharusnya tidak pernah memiliki penangan untuk kesalahan.
Apa perbedaan antara Pengecualian dan Kesalahan?
Kedua kesalahan dan pengecualian adalah kejadian yang tidak diinginkan selama pelaksanaan suatu program. Namun, mereka memiliki perbedaan utama. Pengecualian dapat diramalkan oleh programmer, sementara kesalahan sulit untuk diramalkan. Pengecualian dapat diperiksa atau tidak dicentang. Tetapi kesalahan selalu tidak dicentang. Pengecualian biasanya menunjukkan kesalahan yang disebabkan oleh programmer. Namun, kesalahan terjadi karena kesalahan sistem atau penggunaan sumber daya yang tidak tepat. Oleh karena itu, pengecualian harus ditangani di tingkat aplikasi, sementara kesalahan harus diatasi di tingkat sistem (hanya jika memungkinkan). Setelah menangani pengecualian, Anda dijamin untuk kembali ke aliran program normal. Tetapi bahkan jika kesalahan ditemukan, programmer mungkin tidak tahu bagaimana cara menanganinya. Tidak seperti penanganan kesalahan tradisional, pengecualian memungkinkan pemisahan kode penanganan kesalahan dari kode biasa.