Hatalar hem kullanıcıların hem de programcıların sıkıntısıdır. Geliştiriciler, programlarının her fırsatta düşmesini istemiyor ve kullanıcılar artık hata yapmaya alışkın neredeyse kesinlikle en az bir hata olacak yazılımın bedelini ödeyerek kabul ettikleri programlar o. Java programcıya hatasız bir uygulama tasarlamada sportif bir şans vermek için tasarlanmıştır. Programcının bir uygulamanın bir kaynak veya kullanıcıyla etkileşime girmesi ve bu istisnaların ele alınması olasılığı olduğunu bilecek istisnalar vardır. Ne yazık ki, programcının kontrol edemediği veya sadece göz ardı edemeyeceği istisnalar vardır. Kısacası, tüm istisnalar eşit yaratılmamıştır ve bu nedenle bir programcının düşünmesi gereken birkaç tür vardır.
Bir istisna, programın amaçlanan yürütmesinde akmamasına neden olan bir olaydır. Üç tür istisna vardır: işaretli istisna, hata ve çalışma zamanı istisnası.
Kontrol Edilen İstisna
İşaretli istisnalar, bir Java uygulamasının başa çıkabilmesi gereken istisnalardır. Örneğin, bir uygulama bir dosyadan veri okursa,
FileNotFoundException
. Sonuçta, beklenen dosyanın olması gerektiği yerde olacağının garantisi yoktur. Dosya sisteminde, bir uygulamanın hiçbir fikri olmayacak her şey olabilir.Bu örneği bir adım ileri götürmek. Diyelim ki FileReader
bir karakter dosyasını okumak için. Eğer bir göz atın Java API'sindeki FileReader yapıcı tanımı bunun yöntem imzasını göreceksiniz:
public FileReader (Dize dosya adı) FileNotFoundException özel durumunu atar.
Gördüğünüz gibi kurucu özellikle FileReader
yapıcı bir FileNotFoundException
. Bu, dosya adı
Dize zaman zaman yanlış olur. Aşağıdaki koda bakın:
public static void main (Dize [] args) { FileReader fileInput = null; // Giriş dosyasını açın. fileInput = yeni FileReader ("Untitled.txt"); }
Sözdizimsel olarak ifadeler doğrudur, ancak bu kod asla derlenmez. Derleyici FileReader
yapıcı bir FileNotFoundException
ve bu istisnayı ele almak için arama koduna bağlıdır. İki seçenek vardır - öncelikle yöntemimizden istisna olarak bir atar
fıkra da:
public static void main (String [] argümanları) FileNotFoundException { FileReader fileInput = null; // Giriş dosyasını açın. fileInput = yeni FileReader ("Untitled.txt"); }
Veya aslında istisna ile başa çıkabiliriz:
public static void main (Dize [] args) { FileReader fileInput = null; Deneyin. { // Giriş dosyasını açın. fileInput = yeni FileReader ("Untitled.txt"); } catch (FileNotFoundException ex) { // kullanıcıya dosyayı bulmasını ve bulmasını söyleyin. } }
İyi yazılmış Java uygulamaları, kontrol edilen istisnalarla başa çıkabilmelidir.
Hatalar
İkinci tür istisna hata olarak bilinir. Bir istisna oluştuğunda JVM bir istisna nesnesi oluşturur. Bu nesnelerin hepsi Atılabil
sınıf. Atılabil
sınıfın iki ana alt sınıfı vardır— Hata
ve İstisna
. Hata
class, uygulamanın başa çıkamayacağı bir istisna belirtir.
Bu istisnalar nadir görülür. Örneğin, donanımın uğraşmak zorunda olduğu tüm işlemlerle başa çıkamaması nedeniyle JVM'nin kaynakları tükenebilir. Uygulamanın kullanıcıyı bilgilendirmek için hatayı yakalaması mümkündür, ancak genellikle altta yatan sorun çözülene kadar uygulamanın kapanması gerekecektir.
Çalışma Zamanı İstisnaları
bir Çalışma zamanı istisnası sadece programcı bir hata yaptığı için oluşur. Kodu yazdınız, derleyiciye iyi görünüyor ve kodu çalıştırdığınızda düşüyor çünkü var olmayan bir dizinin bir öğesine erişmeye çalıştı veya mantık hatası bir yöntemin boş olarak çağrılmasına neden oldu değer. Veya bir programcının yapabileceği herhangi bir sayıda hata. Ama sorun değil, bu istisnaları kapsamlı testlerle tespit ediyoruz, değil mi?
Hatalar ve Çalışma Zamanı İstisnaları denetlenmeyen istisnalar kategorisine girer.