Java try ... catch (Örneklerle)

Bu eğitimde, örnekler yardımıyla Java'daki try catch deyimini öğreneceğiz.

try… catchJava blok kolu özel durumlar için kullanılan program ve anormal sonlandırma önler.

İşte try… catchJava'daki bir bloğun sözdizimi .

 try( // code ) catch(exception) ( // code )

tryBlok bir istisna oluşturabilir kodunu içerir.

catchBlok içindeki bir istisna var oluştuğunda yürütülür kodu tryblok.

Örnek: Java try… catch bloğu

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; System.out.println("Rest of code in try block"); ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) ) )

Çıktı

 ArithmeticException => / sıfıra göre

Yukarıdaki örnekte, satıra dikkat edin,

 int divideByZero = 5 / 0;

Burada bir sayıyı sıfıra bölmeye çalışıyoruz . Bu durumda bir istisna oluşur. Bu nedenle, bu kodu trybloğun içine ekledik.

Program bu kodla karşılaştığında ArithmeticExceptionoluşur. Ve istisna, catchblok tarafından yakalanır ve bloğun içindeki kodu yürütür catch.

catchİçeride bir istisna vardır, eğer blok sadece yürütülür tryblokta.

Not : Java'da trybloksuz bir catchblok kullanabiliriz. Ancak bloksuz bir catchblok kullanamayız try.

Java deneyin… sonunda engelleyin

Ayrıca trybloğu bir nihayet bloğu ile birlikte kullanabiliriz .

Bu durumda, try bloğu içinde bir istisna olsa da olmasa da, final bloğu her zaman çalıştırılır.

Örnek: Java deneyin… sonunda engelleyin

 class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; ) finally ( System.out.println("Finally block is always executed"); ) ) )

Çıktı

 Son olarak blok daima çalıştırılır "main" iş parçacığında istisna java.lang.ArithmeticException: / Main.main'de sıfır ile (Main.java:4)

Yukarıdaki örnekte, trybloğu blokla birlikte kullandık finally. tryBloğun içindeki kodun bir istisnaya neden olduğunu görebiliriz .

Bununla birlikte, finallybloğun içindeki kod istisnadan bağımsız olarak yürütülür.

Java dene… yakala… sonunda engelle

Java'da, bloktan sonraki final bloğunu da kullanabiliriz try… catch. Örneğin,

 import java.io.*; class ListOfNumbers ( // create an integer array private int() list = (5, 6, 8, 9, 2); // method to write data from array to a fila public void writeList() ( PrintWriter out = null; try ( System.out.println("Entering try statement"); // creating a new file OutputFile.txt out = new PrintWriter(new FileWriter("OutputFile.txt")); // writing values from list array to Output.txt for (int i = 0; i <7; i++) ( out.println("Value at: " + i + " = " + list(i)); ) ) catch (Exception e) ( System.out.println("Exception => " + e.getMessage()); ) finally ( // checking if PrintWriter has been opened if (out != null) ( System.out.println("Closing PrintWriter"); // close PrintWriter out.close(); ) else ( System.out.println("PrintWriter not open"); ) ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Çıktı

 Try ifadesi girme Exception => İndeks 5 uzunluk için sınır dışı 5 PrintWriter kapatılıyor

Yukarıdaki örnekte, list adlı bir dizi ve output.txt adlı bir dosya oluşturduk. Burada diziden veri okumaya ve dosyaya depolamaya çalışıyoruz.

Koda dikkat edin,

 for (int i = 0; i < 7; i++) ( out.println("Value at: " + i + " = " + list(i)); )

Burada dizinin boyutu ve dizinin 5son elemanı at list(4). Ancak, a(5) ve öğelerine erişmeye çalışıyoruz a(6).

Bu nedenle kod, catch bloğu tarafından yakalanan bir istisna oluşturur.

Yana finallyblok her zaman çalıştırılır, kapatmak kodu dahil ettik PrintWriternihayet bloğunun içinde.

Bir dosyayı veya bağlantıyı kapatmak gibi önemli temizleme kodunu eklemek için nihayet blok kullanmak iyi bir uygulamadır.

Not : Bir finallybloğun çalışmadığı bazı durumlar vardır :

  • Kullanımı System.exit()yöntemiyle
  • finallyBlokta bir istisna meydana gelir
  • Bir ipliğin ölümü

Çoklu Yakalama blokları

Her tryblok için sıfır veya daha fazla catchblok olabilir. Birden çok catchblok, her istisnayı farklı şekilde ele almamıza izin verir.

Her catchbloğun bağımsız değişken türü, kendisi tarafından ele alınabilecek istisna türünü belirtir. Örneğin,

 class ListOfNumbers ( public int() arr = new int(10); public void writeList() ( try ( arr(10) = 11; ) catch (NumberFormatException e1) ( System.out.println("NumberFormatException => " + e1.getMessage()); ) catch (IndexOutOfBoundsException e2) ( System.out.println("IndexOutOfBoundsException => " + e2.getMessage()); ) ) ) class Main ( public static void main(String() args) ( ListOfNumbers list = new ListOfNumbers(); list.writeList(); ) )

Çıktı

 IndexOutOfBoundsException => Uzunluk 10 için sınır dışı 10 endeks

Bu örnekte, 10arr beden adında bir tamsayı dizisi oluşturduk .

Dizi dizini 0'dan başladığından dizinin son elemanı 'dır arr(9). İfadeye dikkat edin,

 arr(10) = 11;

Burada indeks 10'a bir değer atamaya çalışıyoruz . Dolayısıyla IndexOutOfBoundExceptionoluşur.

tryBlokta bir istisna meydana geldiğinde ,

  • The exception is thrown to the first catch block. The first catch block does not handle an IndexOutOfBoundsException, so it is passed to the next catch block.
  • The second catch block in the above example is the appropriate exception handler because it handles an IndexOutOfBoundsException. Hence, it is executed.

Catching Multiple Exceptions

From Java SE 7 and later, we can now catch more than one type of exception with one catch block.

This reduces code duplication and increases code simplicity and efficiency.

Each exception type that can be handled by the catch block is separated using a vertical bar |.

Its syntax is:

 try ( // code ) catch (ExceptionType1 | Exceptiontype2 ex) ( // catch block )

To learn more, visit Java catching multiple exceptions.

Java try-with-resources statement

Try-ile-kaynaklar deyimi bir veya daha fazla kaynak bildirimleri vardır denemek ifadedir.

Sözdizimi şöyledir:

 try (resource declaration) ( // use of the resource ) catch (ExceptionType e1) ( // catch block )

Kaynak, programın sonunda kapatılacak bir nesnedir. Try deyiminde bildirilmeli ve başlatılmalıdır.

Bir örnek alalım.

 try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) ( // use of the resource )

Kaynaklarla dene deyimi, otomatik kaynak yönetimi olarak da adlandırılır . Bu ifade, ifadenin sonunda tüm kaynakları otomatik olarak kapatır.

Daha fazla bilgi edinmek için java kaynaklarla deneme bildirimini ziyaret edin.

Ilginç makaleler...