İstisna İşleme Java

⚡ Akıllı Özet

Java İstisna işleme, normal program akışını bozan çalışma zamanı hatalarını yönetmek için yapılandırılmış bir mekanizma sağlar. İstisnai durumları tespit etmek, izole etmek ve bunlardan kurtulmak için try, catch, finally, throw ve throws anahtar kelimelerini kullanır.ping Uygulamalar sağlam ve öngörülebilir.

  • ⚠️ Tanımlanan İstisna: İstisna, standart yürütme dizisini kesintiye uğratan ve hata durumunu açıklayan bir nesne olarak temsil edilen bir çalışma zamanı olayıdır.
  • 🧯 Try Catch Bloğu: Riskli kodları bir try bloğu içine alın ve ardından belirli istisna türlerini düzgün bir şekilde yakalamak için bir veya daha fazla catch bloğu ekleyin.
  • 🔁 Son Davranış: `finally` bloğu her zaman `try` ve `catch` bloklarından sonra çalışır; bu da onu dosyaları, soketleri kapatmak veya diğer sistem kaynaklarını serbest bırakmak için ideal kılar.
  • İstisna Hiyerarşisi: Tüm istisnalar Throwable sınıfından miras alır ve bu sınıf Error ve Exception olmak üzere ikiye ayrılır; RuntimeException ise sıfıra bölme gibi denetlenmeyen durumları kapsar.
  • 🧪 En İyi Uygulamalar: En spesifik istisnayı önce yakalayın, boş catch bloklarından kaçının, anlamlı mesajlar kaydedin ve kodu kısa ve bakımı kolay tutmak için çoklu catch kullanın.

İstisna İşleme Java

İstisna nedir? Java?

An İstisna Java Program komutlarının yürütülmesini kesintiye uğratan ve program yürütmesinin normal akışını bozan bir olaydır. Bir metot içinde meydana gelen hata olay bilgilerini içeren ve çalışma zamanı sistemine iletilen bir nesnedir. Javaİstisnalar, geliştiricilerin kontrollü bir şekilde yanıt verebilmeleri için farklı hata durumlarını bildirmek amacıyla kullanılır.

Hata türleri genel olarak iki kategoriye ayrılır. Java:

  1. Derleme zamanı hataları
  2. Çalışma zamanı hataları

Derleme zamanı hataları iki alt türe ayrılabilir:

  • Sözdizimi Hataları
  • Anlamsal Hatalar

Söz Dizimi Hataları Örneği:

Bildirmek yerine int a; yanlışlıkla öyle ilan ettin in a;Bu durumda derleyici hata verecektir.

Anlamsal Hata Örneği: Bir değişken tanımladınız. int a; ve bazı kod satırlarından sonra tekrar bir tamsayıyı şu şekilde bildirirsiniz: int a;Kodu derlediğinizde tüm bu hatalar vurgulanır.

Çalışma Zamanı Hataları Örneği

Çalışma zamanı hatası şu şekilde adlandırılır: IstisnaProgram yürütmesinin normal akışını kesintiye uğratan herhangi bir olaydır. İstisnalara örnek olarak aritmetik istisna, NullPointerException, sıfıra bölme istisnası ve daha birçok istisna verilebilir. Java Bunlar genellikle geliştiricinin doğrudan kontrolü dışında olan koşullardır.

Tıkla okuyun videoya erişilemiyorsa

Hata Yönetimine Neden İhtiyaç Duyuyoruz?

Diyelim ki bir sunucuya erişmek için bir program kodladınız. Geliştirme aşamasında her şey yolunda gidiyor.ping Kodun yerel bir ortamda, kontrollü koşullar altında çalıştırılması.

Java İstisna işleme

Gerçek bir üretim çalışması sırasında sunucu çalışmayabilir. Programınız sunucuya erişmeye çalıştığında bir istisna oluşur ve bu istisna uygun şekilde ele alınmazsa program aniden sonlanır.

Java İstisna işleme

Bir İstisnayı Nasıl Ele Alırsınız? Java

Şimdiye kadar, bir istisnanın genellikle geliştiricinin kontrolü dışında olduğunu gördük. Ancak, kod hatasını çevresel sorunlara bağlamak gerçek bir çözüm değildir. İstisnai durumları ele alan sağlam bir programlamaya ihtiyacınız var. Bu tür kod, istisnai durumlara karşı dayanıklı bir programlama olarak bilinir. İstisna İşleyici.

Örneğimizde, iyi bir istisna yönetimi, birincil sunucu devre dışı kaldığında programın otomatik olarak yedek sunucuya bağlanması anlamına gelir.

Java İstisna işleme

Bunu uygulamak için, geleneksel if ve else koşullarını kullanarak sunucuya bağlanmak için kod yazabilirsiniz. Sunucunun çalışıp çalışmadığını kontrol edersiniz ve eğer çalışıyorsa, yedek sunucuya bağlanmak için kod yazarsınız. Ancak, kodunuzda birden fazla işlem olduğunda, "if" ve "else" dalları kullanılarak yapılan bu kod organizasyonu etkili olmaz. Java istisnalar işlemek için.

class connect{
	if(Server Up){
	 // code to connect to server
	}
	else{
	 // code to connect to BACKUP server
	}
}

Try Catch Blokunda Java

Java Normal mantığı hata kurtarma mantığından ayıran, yerleşik bir istisna işleme mekanizması sağlar.

  1. Normal kod bir TRY engellemek.
  2. İstisna işleme kodu şuraya gider: CATCH engellemek.

Catch Block'u deneyin

Örneğimizde, TRY bloğu sunucuya bağlanmak için gereken kodu içerecektir. CATCH bloğu ise yedek sunucuya bağlanmak için gereken kodu içerecektir. Sunucu çalışır durumdaysa, CATCH bloğundaki kod yok sayılacaktır. Sunucu çalışmıyorsa, bir istisna oluşacak ve CATCH bloğundaki kod yürütülecektir.

Catch Block'u deneyin

Yani, bir istisna bu şekilde ele alınıyor. Java.

try ve catch yapılarının kullanımına ilişkin sözdizimi

try{
    statement(s)
}
catch (exceptiontype name){
	statement(s)
}

Try-Catch Blok Örneği

) 1 Adım Aşağıdaki kodu bir editöre kopyalayın.

class JavaException {
   public static void main(String args[]){
      int d = 0;
      int n = 20;
      int fraction = n/d;
     System.out.println("End Of Main");
   }
}

) 2 Adım Dosyayı kaydedin ve kodu derleyin. Programı `java` komutunu kullanarak çalıştırın. Javaİstisna.

) 3 Adım 5. satırda aritmetik hata (sıfıra bölme) gösteriliyor ve 6. satır hiç çalıştırılmıyor.

) 4 Adım Şimdi try ve catch bloklarının bu istisnayı nasıl ele almamıza yardımcı olacağını inceleyelim. İstisnaya neden olan kod satırını bir try-catch bloğuna yerleştireceğiz. denemek blok ve ardından bir yakalamak blok. Aşağıdaki kodu editöre kopyalayın.

class JavaException {
 public static void main(String args[]) {
  int d = 0;
  int n = 20;
  try {
   int fraction = n / d;
   System.out.println("This line will not be Executed");
  } catch (ArithmeticException e) {
   System.out.println("In the catch Block due to Exception = " + e);
  }
  System.out.println("End Of Main");
 }
}

) 5 Adım Kodu kaydedin, derleyin ve çalıştırın. Aşağıdaki çıktıyı alacaksınız.

Catch Block'u deneyin

Gördüğünüz gibi, istisna ele alınıyor ve son kod satırı da yürütülüyor. Ayrıca, 7. satırın yürütülmeyeceğini de unutmayın çünkü Bir istisna ortaya çıktığı anda kontrol akışı catch bloğuna atlar.

Not: ArithmeticException nesnesi "e", meydana gelen istisna hakkında bilgi taşır ve bu bilgi kurtarma işlemleri yapılırken faydalı olabilir.

Java İstisna Sınıfı Hiyerarşisi

Bir catch bloğu çalıştırıldıktan sonra, diğerleri atlanır ve try ve catch bloklarından sonra yürütme devam eder. İç içe catch blokları, en özel alt sınıftan en genel üst sınıfa doğru istisna hiyerarşisini izlemelidir.

Java İstisna Hiyerarşisi

  • Tüm istisna sınıfları Java Throwable sınıfını genişletin. Throwable'ın Error ve Exception olmak üzere iki alt sınıfı vardır.
  • Error sınıfı, programınızda normal şartlar altında meydana gelmesi beklenmeyen istisnaları veya sorunları tanımlar; örneğin, bellek hatası, donanım hatası veya JVM hatası.
  • Exception sınıfı, programınız tarafından ele alınabilecek istisnaları temsil eder ve programınız try ve catch bloklarını kullanarak bu istisnalardan kurtulabilir.
  • RuntimeException, Exception sınıfının bir alt sınıfıdır. Bu türdeki istisnalar, çalışma zamanında meydana gelen ve derleme zamanında tespit edilemeyen denetlenmemiş istisnaları temsil eder. Sıfıra bölme hatası ve boş işaretçi hatası iyi örneklerdir.
  • Giriş ve çıkış işlemleri sırasında IOException hatası oluşur.
  • InterruptedException hatası Java Çoklu iş parçacıklı işlemler sırasında bir iş parçacığı kesintiye uğradığında oluşturulur.

Örnek: İç içe try ve catch blokları

) 1 Adım Aşağıdaki kodu bir editöre kopyalayın.

class JavaException {
 public static void main(String args[]) {
  try {
   int d = 1;
   int n = 20;
   int fraction = n / d;
   int g[] = {
    1
   };
   g[20] = 100;
  }
  /*catch(Exception e){
  	System.out.println("In the catch block due to Exception = "+e);
  }*/
  catch (ArithmeticException e) {
   System.out.println("In the catch block due to Exception = " + e);
  } catch (ArrayIndexOutOfBoundsException e) {
   System.out.println("In the catch block due to Exception = " + e);
  }
  System.out.println("End Of Main");
 }
}

) 2 Adım Dosyayı kaydedin ve kodu derleyin. Programı şu komutla çalıştırın: Java JavaIstisna.

) 3 Adım Bir ArrayIndexOutOfBoundsException hatası oluştu. int d değerini 0 olarak değiştirin. Kodu kaydedin, derleyin ve çalıştırın.

) 4 Adım Bir ArithmeticException hatası oluşturulmalıdır.

) 5 Adım 10. satırdan 12. satıra kadar olan satırların yorum satırlarını kaldırın. Kodu kaydedin, derleyin ve çalıştırın.

Adım 6) Derleme Hatası mı? Bunun nedeni, Exception sınıfının ArithmeticException'ın temel sınıfı olmasıdır. ArithmeticException tarafından oluşturulan herhangi bir istisna, Exception sınıfı tarafından da ele alınabilir. Bu nedenle, ArithmeticException'ın catch bloğu hiçbir zaman çalıştırılamaz, bu da onu gereksiz kılar. Bu yüzden derleme hatası oluşur.

Java Sonunda Engelle

Nihayet blok ortaya çıkan bir istisnaya bakılmaksızın yürütülür try bloğunda. Bu isteğe bağlı `try` bloğu ile birlikte kullanılmak üzere tasarlanmıştır. `finally` bloğu, veritabanı bağlantıları, dosyalar veya ağ soketleri gibi kaynakları serbest bırakmak için doğru yerdir.

 try {
  statement(s)
 } catch (ExceptiontType name) {

  statement(s)

 } finally {

  statement(s)

 }

Eğer try bloğunda bir istisna oluşursa, catch bloğu tamamlandıktan sonra finally bloğu çalıştırılır.

Son Blok örneği

) 1 Adım Aşağıdaki kodu bir editöre kopyalayın.

class JavaException {
   public static void main(String args[]){
    try{
       int d = 0;
       int n =20;
       int fraction = n/d;
    }
  catch(ArithmeticException e){
    System.out.println("In the catch block due to Exception = "+e);
  }
  finally{
	System.out.println("Inside the finally block");
  }
}
}

) 2 Adım Kodu kaydedin, derleyin ve çalıştırın.

) 3 Adım Beklenen çıktı: Bir istisna oluşmasına rağmen finally bloğu çalıştırılır.

) 4 Adım d değişkeninin değerini 1 olarak değiştirin. Kodu kaydedin, derleyin ve çalıştırın, çıktıyı gözlemleyin.

için En İyi Uygulamalar Java İstisna işleme

Birkaç kanıtlanmış kurala uymak, işinizi sürdürmenize yardımcı olacaktır. Java Kodun dayanıklı, okunabilir ve hata ayıklamasının kolay olması:

  • Hata hiyerarşisinin bütünlüğünü korumak için önce en spesifik hatayı, ardından daha genel olanları yakalayın.
  • Boş catch bloklarından kaçının. En azından, hatanın temel nedeninin asla gözden kaçmaması için istisnayı kaydedin.
  • Dosyaları, soketleri ve veritabanı bağlantılarını serbest bırakmak için `finally` bloğunu kullanın veya `resources` ile `try` yapısını kullanın.
  • Yalnızca çağıranın makul bir şekilde kurtarma yapabileceği durumlarda denetlenen istisnaları fırlatın ve programlama hataları için denetlenmeyen istisnaları kullanın.
  • API'nin sürekliliğini sağlamak için düşük seviyeli istisnaları anlamlı bir iş istisnasına sarın.tractemiz.
  • Çoklu iş parçacıklı kodda InterruptedException'ı asla sessizce yutmayın, bunun yerine kesme bayrağını geri yükleyin.

SSS

Denetimli istisnalar derleme zamanında doğrulanır ve IOException gibi bildirilmesi veya yakalanması gerekir. Denetimsiz istisnalar RuntimeException'ı genişletir, çalışma zamanında meydana gelir ve NullPointerException veya ArithmeticException gibi zorunlu işlem gerektirmez.

`finally` bloğu, bir istisna oluşup oluşmadığına bakılmaksızın, `try` ve `catch` bloklarından sonra her zaman çalışır. Dosya tanıtıcıları, veritabanı bağlantıları veya soketler gibi kaynakları serbest bırakmak ve işlemlerin temiz bir şekilde sonlandırılmasını sağlamak için en güvenli yerdir.

`throw` anahtar kelimesi, bir metot içinde gerçekten bir istisna nesnesi oluşturmak için kullanılırken, `throws` ise metot imzasında, metodun belirli denetlenen istisnaları işleme için çağırana iletebileceğini belirtmek için kullanılır.

Evet. Bir try bloğunun ardından herhangi bir catch bloğu olmadan finally bloğu gelebilir. Bu kalıp, geliştiricinin istisnanın kendisi çağırana iletilse bile temizleme kodunun çalışmasını sağlamak istediği durumlarda kullanılır.

Evet. Yapay zeka destekli gözlemlenebilirlik araçları yığın analizini yapar. tracHata ayıklama araçları, çalışma zamanı istisnalarının nerede meydana gelme olasılığının yüksek olduğunu tahmin etmek için hata günlüklerini, kod yollarını ve kayıtları inceler. Savunma amaçlı kontroller önerir, hata yakalama bloğunun yerleştirilmesini tavsiye eder ve anormallikleri ortaya çıkarır.ping Ekipler, çökmelerin üretim aşamasına ulaşmadan önce önlenmesini sağlarlar.

Yapay zeka asistanları yığın ayrıştırması tracHataları kaynak kodla ilişkilendirir ve olası temel nedenler ile çözümler önerirler. Try-catch şablonları oluştururlar, loglama iyileştirmeleri önerirler ve hatta hatalı yöntemleri yeniden yazarak geliştiricilerin teşhis için harcadığı zamanı önemli ölçüde azaltırlar. Java istisnalar.

Bu yazıyı şu şekilde özetleyin: