İstisna ve Hata
Bir program çalışırken beklenmedik davranış oluşması gerekir. Bunun nedeni istisnalar veya hatalar olabilir. İstisnalar, normal program akışını bozabilecek olaylardır. Hatalar onarılamaz olarak kabul edilebilecek koşullardır. İstisnalar çoğunlukla uygulamanın kendisiyle, hatalar ise programın çalıştığı sistemle ilgilidir.
İstisna nedir?
İstisna, normal program akışını bozabilecek bir olaydır. İsim istisnası “istisnai olaydan” gelir. Bir istisna atmak, bir istisna nesnesi oluşturma ve onu çalışma zamanı sistemine teslim etme işlemidir. Özel durum nesnesi, özel durumun oluştuğu yöntemle oluşturulur. İstisna nesnesi, istisnanın türü ve açıklaması gibi yararlı bilgiler içerir. Çalışma zamanı sistemi istisna nesnesini aldığında, çağrı yığını içinde ters sırada (yöntemlerin çağrıldığı) geçerek onu işleyecek birini bulmaya çalışacaktır. Çağrı yığını, istisnanın gerçekleştiği yöntemden önce çağrılan sıralı yöntem listesidir. Bir istisna işleyici içeren bir yöntem bulursa, çalışma zamanı sistemi başarılı olur. Özel durum işleyici, söz konusu özel durumu resmi olarak işleyebilen bir kod bloğudur. Çalışma zamanı sistemi uygun bir işleyici bulursa (örn. Özel durum türü, işlenebilecek türle eşleşir), özel durum nesnesini işleyiciye iletir. Buna istisna yakalama denir. Ancak, kural dışı durum işlenemezse, program sonlandırılır. Java'da istisnalar 'Atılabilir sınıftan' devralınır. NullPointerException ve ArrayIndexOutOfBoundsException, Java'da yaygın olarak kullanılan iki istisnadır.
Hata Nedir?
Bir hata, mevcut olandan daha büyük bir bellek gerektiren program gibi geri alınamayan bir durumdur. Bu hatalar çalışma zamanında ele alınamaz. Bir hata oluşursa, program sonlandırılır. Java'da hatalar Throwable sınıfından devralınır. Hatalar genellikle programcının (veya uygulamanın) yakalamaya çalışmaması gereken ciddi sorunları ifade eder. Hatalar, normal şartlar altında asla meydana gelmesi beklenmeyen ve bu nedenle asla öngörülmeyen anormal durumlardır. Örneğin, OutOfMemoryError, StackOverflowError ve ThreadDead bu tür hatalardır. Yöntemlerde hatalar için hiçbir zaman işleyici bulunmamalıdır.
İstisna ve Hata arasındaki fark nedir?
Hem hatalar hem de istisnalar, bir programın yürütülmesi sırasında istenmeyen olaylardır. Ancak, önemli farkları vardır. İstisnalar programcı tarafından öngörülebilirken, bir hatanın öngörülmesi zordur. İstisnalar kontrol edilebilir veya işaretsiz olabilir. Ancak hatalar her zaman işaretlenmez. İstisnalar genellikle programcının neden olduğu bir hatayı gösterir. Ancak, bir sistem hatası veya kaynağın uygunsuz kullanımı nedeniyle hatalar oluşur. Bu nedenle, istisnalar uygulama düzeyinde ele alınmalı, hatalar ise sistem düzeyinde ele alınmalıdır (sadece mümkünse). Bir istisnayı ele aldıktan sonra, normal program akışına dönmeniz garanti edilir. Ancak bir hata yakalansa bile, programcı ilk etapta nasıl ele alınacağını bilemeyebilir. Geleneksel hata işlemenin aksine, istisnalar hata işleme kodunu normal koddan ayırmaya izin verir.