Herhangi bir program yalnızcaKaynak kodunun hata ayıklanması durumunda ve öngörülemeyen durumlara neden olabilecek hiçbir koşul yoktur. Olası arızaları yakalama işlemi programlama aşamasında gerçekleştirilir. Bunun için, geliştirici beklenen tüm sonuçları dikkate alır ve hatanın etkisini programı bozmayacak veya çökmesine neden olmayacak şekilde sınırlamaya çalışır.
İstisna İşlemi Ne Zaman Gerekli Olabilir
Java'da, sonuç olarak istisnalar atılabiliryanlış kullanıcı girişi, programın çalışması için gerekli kaynağın eksikliği veya ani bir ağ kesintisi. Geliştirici tarafından oluşturulan uygulamanın rahat kullanımı için, acil durumların ortaya çıkışını kontrol etmek gerekir. Tüketici telefonu kapatma programının bitmesini beklememeli, işlenmeyen istisnalar sonucu veri kaybına uğramamalı veya sık sık bir şeyler ters gitti.
Java istisna işleme
Dikkate alınması gerekenlerJava dili kendi yerleşik istisna işleme işlevselliğine sahiptir. Elbette, sistem otomatik olarak daha fazla kullanmanın imkansız olduğunu bildirdiğinde, derleme aşamasında bile büyük miktarda hata yakalanır. Ancak program çalışması sırasında ortaya çıkan bir istisna da vardır. Geliştirici, bunu önceden tahmin edebilmeli ve bir hataya yol açmayacak şekilde kod tasarlayabilmelidir, ancak özel bir şekilde işler veya kontrolü başka bir şubeye aktarır.
Java'da, böyle bir istisna yakalama, derleyici tarafından dayatılabilir, bu nedenle tipik sorunlar bilinir ve kendi standart uygulama şemalarına sahiptir.
Tipik İstisnalar
En basit örnek neredeistisna edinmek bir bölünmedir. Tüm sadeliğine rağmen, bir bölen olarak ifade, bir hataya yol açacak şekilde sıfır olabilir. Görünümünün daha erken tahmin edilip önlenebilmesi iyi olur. Ancak bu seçenek her zaman kullanılamaz, bu nedenle, bir "sıfıra bölünme" gerçekleştiğinde doğrudan bir istisna yakalamak gerekir.
Java'da, hata yakalama mekanizması şuna benzer:
- Öbek üzerinde bir istisna nesnesi yaratılır;
- programın doğal seyri kesintiye uğradı;
- bir istisna mekanizması kodu devam ettirmek için alternatif bir yol bulmaya çalışır;
- Programın işleyicide güvenli bir şekilde yürütülmesinin yerini bulmak, iş geri yüklenecek veya istisna özel bir şekilde uygulanacaktır.
Bir hata oluşturmanın en basit örneği şöyle görünebilir:
eğer (a == null)
yeni NullPointerException () atmak;
Burada a değişkeni başlatma için kontrol edilir,yani nesneye referansın boş olup olmadığı. Böyle bir durum ortaya çıktığında ve özel işlem yapılması gerektiğinde, new NullPointerException () atma kullanılarak bir istisna atılır.
Bazı Anahtar Kelime Ayrıntıları
İstisnalarla çalışırken, bir eylemi belirtmek için genellikle Java anahtar kelimeler kullanmanız gerekir. Bu programlama dilinde bunlardan beş tane var:
- Dene. Bu anahtar kelimeyle zaten karşılaşıldı ve bir istisna oluşturabilecek bir kod bölümüne geçmek anlamına geliyor. Blok {} ile kaşlı ayraçlarla sınırlıdır.
- Yakalama. İstenilen istisna türünü durdurur ve buna göre işler.
- Nihayet.Bu anahtar kelime isteğe bağlıdır ve istisnalar olmasa bile, her durumda gerekli olan belirli bir kod bölümünü yürütmek için kullanılır. Try bloğundan hemen sonra eklenir.
- Atma - kodunuzun herhangi bir yerinde Java istisnaları oluşturmanıza olanak sağlar.
- Atar - yerleştirilen bir anahtar kelimeyöntem imzası. Bu sonraki kodun belirtilen türden bir Java istisnası atayabileceği anlamına gelir. Böyle bir etiket, geliştiricilerin aklında tutması için bir işaret görevi görür - yöntem beklendiği gibi çalışmayabilir.
Deneyin ile yakalayın
Java istisnalarını doğal olarak atmaözel olarak işleneceğini öne sürüyor. Kod bölümü belirli bir blokta çitle çevrilmişse, bunu yapmak en uygun yoldur. Muhtemelen bir istisna içerir. Bu tür bir kod yürütüldüğünde, sanal makine öngörülemeyen bir durum bulur, kritik bir blokta olduğunu anlar ve kontrolü kontrol bölümüne aktarır.
Java’da, kod özel bir deneme bloğunaİçinde bir istisna atılabilir. Bu nedenle, bir defada öngörülemeyen birkaç durum, kodun üzerine yayılmadan tek bir yerde yakalanacak şekilde yerleştirilir.
Bir işlem birimine sahip en tipik kod şöyle görünür:
dene {
// Burada bir istisna atabilecek kod tanımlanacak
} catch (exception_type_1 tanımlayıcı_1) {
// Burada istisna, türüne ve koşullarına göre işlenir;
} yakala (Exception_Type2 ID_2) {
// Burada istisna, türüne ve koşullarına göre işlenir;
}
Catch anahtar sözcüğü, kodunistisna olup olmadığını kontrol etmek için türüyle eşleşmesi şartıyla aşağıda açıklandığı şekilde işlenmesi gerekir. Tanımlayıcı, işlem kodu bloğunun içinde bağımsız değişken olarak kullanılabilir.
nihayet
Bir önceki bölümden anlaşıldığı gibi, bloklaristisnaları yakalamak ve bunları işlemek. Ancak çoğu zaman, hataların yakalanıp yakalanmadığına bakılmaksızın bazı kodların yürütülmesi gerektiğinde bir durum ortaya çıkar. Bunun için sonunda bir anahtar kelime var. Çeşitli sayaçların değerlerini artırmak, dosyaları kapatmak veya ağa bağlanmak için kullanılır.
Bu bölüm birkaç blok içeriyoristisnaları yakalamak için icat edilmiş yöntemlerle yakalayın. Örneğin, denemede bulunan kod, Cold gibi beklenmeyen bir duruma yol açar. Sonra ifadeler “Soğuk algılandı!” Ve “Bu neşelendirecek bir şey mi?” Konsolda gösterilecek. Yani, nihayet blok zaten çalıştırılır.
Aslında, sonunda kaçmaktan kaçınmanın bir yolu var. Sanal makinenin kapatılması ile ilişkilidir. Bunun İnternette nasıl uygulanacağını bulabilirsiniz.
Anahtar kelimeyi at
Atmak bir istisna atar. Sözdizimi şöyle görünür:
yeni NewException () atmak;
Bu tür ile yeni bir istisna oluştururNewException (). Bir tür olarak, standart Java kitaplıklarına zaten dahil edilmiş ve daha önce kendi üretimlerinin geliştiricisi tarafından tanımlanan sınıflar kullanılabilir.
Böyle bir yapı, daha sonra araya girebilmek için try bloğu çerçevesinde çağrılması gereken bir yöntemin tanımına dahil edilir.
Anahtar kelime atıyor
Geliştirme sürecinde ne yapmalıBir yöntemin bir istisna atabileceği ancak doğru şekilde işleyemediği bir durum. Bunun için atar kelimesi ve olası istisna türü yöntem imzasında belirtilmiştir.
Bu etiket bir tür işaretçidir.müşteri geliştiricileri, yöntemin kendi istisnalarını çözemediğini söyledi. Ek olarak, eğer hata tipi doğrulanabilir ise, derleyici bunu açıkça belirtmeye zorlar.
Kaynakları dene
Java sürüm 7'de, geliştiriciler, kaynaklarla bir deneme bloğunu işlemek kadar önemli bir yeniliği dahil ettiler.
Onlardan sonra Java'da oluşturulan birçok nesneKaynaklardan tasarruf etmek için kullanım kapatılmalıdır. Önceden, bunu dikkate almalı ve bu gibi örnekleri elle durdurmalıydım. Artık AutoClosable arayüzüne sahipler. Try bloğuna yerleştirilmiş kullanılmış nesneleri otomatik olarak kapatmaya yardımcı olur. Bu yaklaşım sayesinde kod yazma daha kolay hale geldi ve okunabilirliği önemli ölçüde arttı.
Yerel Java Hariç Tutma Sınıfları
Tanımlanan programlama dilinin yaratıcılarıAcil durum türlerini tasarlarken birçok yönü dikkate aldı. Bununla birlikte, olayların sonuçlarının tüm değişkenlerini engellemek mümkün değildir, bu nedenle Java, özel olarak belirli bir kodun gereksinimlerine uygun kendi istisnalarını belirleme yeteneğine sahiptir.
Yaratmanın en kolay yolu, bağlam için en uygun olan nesneyi miras almaktır.
İstisna'dan miras kaldığı yer burası,kendi istisnalarınızı tanımlamak için kullanılan sınıf. MyException'da iki yapıcı var - biri varsayılan olarak, diğeri ise String türünde bir msg argümanıyla.
Sonra kamu sınıfında FullConstructors uygulanmaktadırimzasını içeren f yöntemi MyException'ı atar. Bu anahtar kelime, f'nin MyException türünde bir Java istisnası atabileceği anlamına gelir. Ayrıca, yöntemin gövdesinde, konsola metin bilgileri çıkar ve asıl MyException üretimi fırlatılarak atılır.
İkinci yöntem birinciden biraz farklıBir istisna atıldığında, yakalandığında konsola yansıtılacak olan bir string parametresi iletilir. Ana olarak, f () ve g () öğelerinin try bloğuna yerleştirildiğini ve catch anahtar sözcüğünün MyException'ı yakalamak üzere ayarlandığını görebilirsiniz. İşlemin sonucu, konsola gönderilen bir hata mesajı olacaktır:
Böylece elle yaratılan Java istisnalarını ekledi.
İstisna Mimarisi
Java'daki tüm nesneler gibi, istisnalar dakalıtımsal ve hiyerarşik bir yapıya sahiptir. Bu programlama dilinde atılan tüm hataların kök elemanı java.lang.Throwable sınıfıdır. İki tür ondan miras alınır - Hata ve İstisna.
Hata - kritik hatalar hakkında bilgilendirir veBunlar işaretlenmemiş Java istisnalarıdır. Çoğu durumda bu tür verilerin yakalanması ve işlenmesi geliştirme aşamasında ortaya çıkar ve son başvuru kodunda uygulanması gerekmez.
Yaratmada en çok kullanılan sınıfve istisna analizi İstisna tarafından sunulur. Sırasıyla, RuntimeException dahil olmak üzere çeşitli dallara ayrılmıştır. RuntimeException, program çalışırken meydana gelen çalışma zamanı istisnalarını içerir. Miras kalan tüm sınıflar denetlenmez.
Yaygın istisnalar
Java'da, aşağıda listelenen istisnalar en yaygın kullanılan istisnalardır, bu nedenle her birini daha ayrıntılı olarak açıklamaya değer:
- Aritmetik İstisna. Bu, aritmetik işlemlerle ilgili hataları içerir. En çarpıcı örnek, sıfıra bölmedir.
- ArrayIndexOutOfBoundsException - toplam uzunluğunu aşan bir dizi öğesinin sayısına erişim.
- ArrayStoreException - bir dizi öğesine uyumsuz bir tür atama girişiminde bulunuldu.
- ClassCastException - Bir türü yanlış bir şekilde diğerine dönüştürme girişiminde bulunuldu.
- IllegalArgumentException - Bir yöntem çağrısında geçersiz bir argüman kullanma.
- NegativeArraySizeException - Negatif boyut dizisi oluşturulurken bir istisna oluştu.
- NullPointerException - Boş bir başvurunun yanlış kullanımı.
- NumberFormatException - Dize hatalı bir şekilde sayıya dönüştürüldüğünde atılır.
- UnsupportedOperationException - İşlem desteklenmiyor.
Bu örnekler, Java denetlenmemiş istisna türleridir. Ve kontrol edilenler şöyle görünüyor:
- ClassNotFoundException - sınıf bulunamadı.
- IllegalAcccessException - sınıf erişim kısıtlaması.
- InterruptedException - iş parçacığı kesintisi.
- NoSuchFieldException - Gerekli bir alan mevcut değil.
İstisnaları Yorumlama
Yaygın istisnalar hakkında konuşurkengeliştirme sırasındaki yorumlarının yanlış anlaşılabileceğini unutmayın. Aşağıdakiler, öngörülemeyen bir durumun ne zaman ortaya çıkabileceğini daha ayrıntılı olarak açıklayan küçük bir listedir.
NullPointerException.İlk kez bir istisna atıldığında, boş olan bir nesne referansına atıfta bulunulur. Bu, bir sınıfın boş bir örneğinin yöntemleri için de geçerlidir. Dizi uzunluğu null değerine eşit olsa bile NullPointerException oluşturulabilir. Null için nesnelerin periyodik kontrolü, bu tür durumlardan kaçınmaya yardımcı olacaktır.
ArrayIndexOutOfBoundsException.Dizi kullanmadan herhangi bir program var olamaz. Buna göre, bunlara sık erişim hatalara yol açabilir. Bir geliştirici, dizin listesinde olmayan bir dizi öğesine erişmeye çalıştığında bir istisna atılır. Örneğin, istenen değer sıfırdan büyük veya küçüktür. Çoğu zaman, dizideki sayının sıfırdan başlamasının bir sonucu olarak ortaya çıkar.
bulgular
Java Özel Durum İşleme Güçlü bir Araçtırprogramcının çalışmasını büyük ölçüde kolaylaştıran ve temiz ve hatasız kod oluşturmasına izin veren bir ortam. Geliştirici şirketin statüsü ve itibarı, uygulamanın ne kadar sorunsuz ve istikrarlı bir şekilde çalıştığına bağlıdır.
Tabii ki, az çok basit programlardaanormal durumları izlemek çok daha kolaydır. Ancak birkaç yüz bin satırlık büyük otomatik komplekslerde, bu yalnızca uzun hata ayıklama ve testlerin bir sonucu olarak mümkündür.
Java istisnaları için, hataların meydana geldiğiBazı uygulamalarda, bireysel şirketler, meraklıları tarafından bulunduğunda ödüller sunar. Özellikle takdir edilenler, yazılım kompleksinin güvenlik politikasının ihlaline neden olanlardır.