Hataları İşleme
Bir programdaki olası tüm hatalar derleme zamanında tespit edilemeyebilir. Örneğin; numberOfItems (öğe sayısı) sıfırsa aşağıdaki deyimde ne olur?
double unitPrice = totalPrice/numberOfItems;

İlk olarak numberOfItems'ın sıfır olmadığından şu kontrolle emin olabilirsiniz:
double unitPrice = 0;
if(numberOfItems!=0) unitPrice = totalPrice/numberOfItems;

Bu iyi fikir gibi, fakat, bu hataları işlemek için iyi bir yol mu? Hayır! Çünkü yukarıdaki kodu takip eden deyimler unitPrice'ı kullanabilirler ve eğer numberOfItems sıfırsa anlamsız sonuçlar üretebilirler. Bu yüzden unitPrice'ı kullanan kalan deyimlerin yürütülmesini durdurmak ve sorunu gerekli eylemlerin alındığı farklı bir bağlamda çözmek daha iyi olabilir. Bu unitPrice'i kullanan deyimleri yada bölümünde hatayı işleyen bir eğer deyimi içinde kapsamayı gerektirebilir. Fakat, eğer kodda böyle çok hata olursa, herbiri için eğer-yada deyimi sağlamak kodunuzun sipagetti kod (anlaması ve değiştirmesi zor) olmasını sağlayabilir.
Kural dışı durum işleme mekanizması programlardaki bu tür hatalarla uğraşırken anlamlı bir yapı sağlar. Bir hata meydana geldiği zaman, kural dışı durum işleme mekanizması hata hakkında anlamlı bilgi üretir ve deyimin çalışmasını hata, kural dışı durum işleyici diye adlandırılan özel bir kod parçacığı tarafından işleninceye kadar, durdurur. Bu durum daha ileri gitmeden önce kimi eylemleri yerine getirmeye imkan tanır. Bu, hata hakkında detaylı bilgi içeren, meydana geldiğinde programın türü ve durumunu içeren, bir nesnenin oluşturulmasıyla yapılır. Sonra çalışma zamanı sistemi hata için bir tane işleyici bulur ve bu nesneyi işleyiciye geçirir.