Mengapa Program Macet?

Mengapa Program Macet?
Mengapa Program Macet?

Video: Mengapa Program Macet?

Video: Mengapa Program Macet?
Video: Kenapa Jakarta Macet Banget? 2024, April
Anonim

Berbagai tugas yang diselesaikan hari ini dengan bantuan komputer pribadi disediakan oleh keberadaan sejumlah besar program aplikasi. Kenyamanan bekerja dengan perangkat lunak sangat tergantung pada keandalannya, yang dinyatakan dengan tidak adanya situasi darurat. Namun, banyak program mogok pada saat yang paling tidak tepat. Mengapa?

Mengapa
Mengapa

Mekanisme pengecualian digunakan untuk melacak dan menangani situasi khusus, tidak normal atau salah yang muncul selama pengoperasian program komputer di bawah kendali sistem operasi modern. Pengecualian dapat berupa perangkat keras (dilempar oleh prosesor) dan perangkat lunak (dilempar oleh aplikasi itu sendiri atau beberapa komponen eksternal plug-in).

Terlepas dari jenisnya, pengecualian dapat ditangkap dan ditangani dengan benar. Pengecualian yang tidak tertangkap masuk ke root runtime library handler atau handler yang diinstal sistem operasi. Jika ini terjadi, program macet dengan pesan atau jendela penghentian tidak normal (di Windows). Jika penangan sistem operasi tidak berfungsi (misalnya, sengaja dihapus), program "diam-diam macet". Dengan demikian, program macet karena pengecualian yang tidak dapat ditangani. Alasan terjadinya pengecualian berbeda.

Dalam sebagian besar kasus, program macet karena eksekusi kode mereka sendiri yang mengandung kesalahan implementasi eksplisit atau implisit. Daftar kemungkinan penyebab keadaan darurat sangat panjang. Ini adalah kesalahan klasik operasi pada bilangan floating point (misalnya, pembagian dengan 0), dan kesalahan bekerja dengan memori (membaca atau menulis di luar ruang alamat proses, akses ke halaman yang dilindungi, menulis ke area memori hanya-baca), overflow stack karena rekursi tak terbatas, dll. Dalam kasus ini, pengecualian perangkat keras atau pengecualian sistem operasi dilemparkan.

Kesalahan implisit mencakup berbagai kasus pemfilteran data input yang tidak memadai, kurangnya validasi nilai pointer, dan banyak lagi. Kekurangan seperti itu menyebabkan situasi luar biasa hanya dalam kasus-kasus tertentu.

Kesalahan implementasi juga dapat ditemukan pada komponen eksternal yang digunakan oleh aplikasi. Misalnya, di pustaka dinamis yang menyediakan fungsionalitas atau modul tambahan yang diperlukan. Kode program yang secara implisit dimuat ke dalam ruang alamat suatu proses (misalnya, untuk mencegat fungsi API tertentu) juga dapat menyebabkan program mogok.

Banyak komponen dan pustaka (misalnya, ADO di Windows) menggunakan mekanisme pengecualian terprogram sebagai prioritas untuk melaporkan kesalahan. Tidak adanya atau penanganan pengecualian yang tidak lengkap oleh aplikasi semacam ini dapat menyebabkan crash bahkan dalam situasi yang sama sekali tidak berbahaya (seperti kehilangan koneksi ke database).

Direkomendasikan: