Perbedaan antara pengecualian dan kesalahan
Eksepsi vs. Kesalahan
Perilaku tak terduga pasti terjadi saat sebuah program berjalan. Ini bisa jadi karena pengecualian atau kesalahan. Pengecualian adalah kejadian, yang bisa mengganggu aliran program normal. Kesalahan adalah kondisi yang bisa dianggap irrecoverable. Pengecualian sebagian besar terkait dengan aplikasi itu sendiri, sementara kesalahan terkait dengan sistem di mana program berjalan.
Apa itu Pengecualian?
Pengecualian adalah sebuah peristiwa, yang dapat mengganggu aliran program normal. Pengecualian nama berasal dari "event luar biasa". Melontarkan pengecualian adalah proses pembuatan objek pengecualian dan menyerahkannya ke sistem runtime. Objek pengecualian dibuat dengan metode pengecualian yang terjadi. Objek pengecualian berisi informasi bermanfaat seperti jenis dan deskripsi pengecualian. Ketika sistem runtime menerima objek pengecualian, ia akan mencoba menemukan seseorang untuk menanganinya di dalam tumpukan panggilan dengan melintasinya dalam urutan terbalik (di mana metode dipanggil). Call stack adalah daftar metode yang diperintahkan, yang dipanggil sebelum metode di mana pengecualian terjadi. Sistem runtime berhasil jika menemukan sebuah metode dengan exception handler. Exception handler adalah blok kode yang secara resmi dapat menangani pengecualian tersebut. Jika sistem runtime menemukan handler yang tepat (tipe pengecualian i cocok dengan tipe yang dapat ditangani), maka akan melewati objek pengecualian ke handler. Ini disebut menangkap pengecualian. Namun, jika pengecualian tidak bisa ditangani, program akan dihentikan. Di Jawa, pengecualian diwarisi dari kelas 'Throwable. 'NullPointerException dan ArrayIndexOutOfBoundsException adalah dua pengecualian umum di Jawa.
Apa itu Error?
Kesalahan adalah kondisi yang dapat dianggap tidak dapat dipulihkan seperti program yang membutuhkan jumlah memori lebih besar dari pada yang tersedia. Kesalahan ini tidak bisa ditangani saat runtime. Jika terjadi kesalahan, program akan berakhir. Di Jawa, kesalahan mewarisi dari kelas Throwable. Kesalahan biasanya menghadapi masalah serius yang mungkin tidak coba dilakukan pemrogram (atau aplikasi). Kesalahan hanyalah kondisi abnormal, yang tidak pernah diperkirakan terjadi dalam keadaan normal, dan karena itu tidak pernah diramalkan. Misalnya, OutOfMemoryError, StackOverflowError dan ThreadDead adalah kesalahan seperti itu. Metode seharusnya tidak pernah menangani kesalahan.
Apa perbedaan antara Exception dan Error?
Kesalahan dan pengecualian adalah kejadian yang tidak diinginkan selama eksekusi sebuah program. Namun, mereka memiliki perbedaan penting. Pengecualian dapat diramalkan oleh programmer, sementara kesalahan sulit untuk diramalkan.Pengecualian bisa dicek atau dicentang. Tapi kesalahan selalu dicentang. Pengecualian biasanya menunjukkan kesalahan yang disebabkan oleh pemrogram. Namun, kesalahan terjadi karena kesalahan sistem atau penggunaan sumber daya yang tidak pantas. Oleh karena itu, pengecualian harus ditangani pada tingkat aplikasi, sedangkan kesalahan harus ditangani pada tingkat sistem (hanya jika memungkinkan). Setelah menangani pengecualian, Anda dijamin kembali ke aliran program normal. Tetapi bahkan jika ada kesalahan yang tertangkap, pemrogram mungkin tidak tahu bagaimana menanganinya di tempat pertama. Tidak seperti penanganan kesalahan tradisional, pengecualian memungkinkan memisahkan kode penanganan kesalahan dari kode biasa.