Günümüzde kişisel bilgisayarların yardımıyla çözülen görevlerin çeşitliliği, çok sayıda uygulama programının varlığı ile sağlanmaktadır. Yazılımla çalışmanın rahatlığı, büyük ölçüde, acil durumların yokluğunda ifade edilen güvenilirliğine bağlıdır. Ancak, birçok program en uygunsuz anda çöküyor. Niye ya?
İstisna mekanizması, bilgisayar programlarının modern işletim sistemlerinin kontrolünde çalışması sırasında ortaya çıkan özel, anormal veya hatalı durumları takip etmek ve ele almak için kullanılır. İstisnalar, donanım (işlemci tarafından atılan) ve yazılım (uygulamanın kendisi veya bazı eklenti harici bileşenler tarafından atılan) olabilir.
Türü ne olursa olsun, istisna yakalanabilir ve doğru şekilde işlenebilir. Yakalanmayan istisnalar, kök çalışma zamanı kitaplığı işleyicisine veya işletim sistemi tarafından yüklenmiş bir işleyiciye gider. Bu olursa, program bir mesajla veya anormal bir sonlandırma penceresiyle (Windows'ta) çöker. İşletim sistemi işleyicisi çalışmadıysa (örneğin, kasıtlı olarak kaldırıldı), program "sessizce çöküyor". Bu nedenle, işlenemeyen istisnalar nedeniyle programlar çöker. İstisnaların ortaya çıkma nedenleri farklıdır.
Vakaların ezici çoğunluğunda, programlar açık veya örtük uygulama hataları içeren kendi kodlarının yürütülmesi nedeniyle çöküyor. Acil durumların olası nedenlerinin listesi çok uzundur. Bunlar hem kayan noktalı sayılardaki klasik işlem hataları (örneğin 0'a bölme) hem de bellekle çalışma hatalarıdır (işlem adres alanı dışında okuma veya yazma, korumalı sayfalara erişim, salt okunur bellek alanına yazma), sonsuz özyineleme nedeniyle yığın taşması, vb. Bu durumlarda, donanım istisnaları veya işletim sistemi istisnaları atılır.
Örtük hatalar, giriş verilerinin yetersiz filtrelenmesi, işaretçi değerlerinin doğrulanmaması ve çok daha fazlası gibi çeşitli durumları içerir. Bu tür eksiklikler, yalnızca belirli durumlarda istisnai durumlara yol açar.
Uygulama hataları, uygulama tarafından kullanılan harici bileşenlerde de bulunabilir. Örneğin, gerekli işlevselliği veya eklenti modüllerini sağlayan dinamik kitaplıklarda. Bir işlemin adres alanına dolaylı olarak yüklenen program kodu (örneğin, belirli API işlevlerini engellemek için) de programın çökmesine neden olabilir.
Birçok bileşen ve kitaplık (örneğin, Windows'ta ADO), hataları raporlamak için bir öncelik olarak programlı özel durum mekanizmasını kullanır. Bu tür bir uygulama tarafından istisnaların yokluğu veya eksik ele alınması, tamamen zararsız durumlarda bile (veritabanıyla bağlantının kesilmesi gibi) çökmesine neden olabilir.