logo

Java try-catch bloğu

Java deneme bloğu

Java denemek blok, istisna oluşturabilecek kodu içine almak için kullanılır. Yöntem dahilinde kullanılmalıdır.

Try bloğundaki belirli bir ifadede bir istisna meydana gelirse, blok kodunun geri kalanı yürütülmeyecektir. Bu nedenle istisna atmayacak şekilde kodu try bloğunda tutmamanız önerilir.

Java try bloğunun ardından catch veya nihayet bloğu gelmelidir.

Java try-catch'in sözdizimi

 try{ //code that may throw an exception }catch(Exception_class_Name ref){} 

Try-finally bloğunun sözdizimi

 try{ //code that may throw an exception }finally{} 

Java yakalama bloğu

Java catch bloğu, parametre içindeki istisnanın türünü bildirerek İstisnayı işlemek için kullanılır. Bildirilen istisna, üst sınıf istisnası (yani İstisna) veya oluşturulan istisna türü olmalıdır. Ancak iyi yaklaşım, oluşturulan istisna türünü bildirmektir.

arduino'da baud hızı

Catch bloğu yalnızca try bloğundan sonra kullanılmalıdır. Tek bir try bloğuyla birden fazla catch bloğu kullanabilirsiniz.

Java try-catch bloğunun dahili çalışması

Java try-catch bloğu

JVM öncelikle istisnanın ele alınıp alınmadığını kontrol eder. İstisna işlenmezse JVM, aşağıdaki görevleri gerçekleştiren varsayılan bir istisna işleyicisi sağlar:

  • İstisna açıklamasını yazdırır.
  • Yığın izlemeyi yazdırır (İstisnanın oluştuğu yöntemlerin hiyerarşisi).
  • Programın sonlandırılmasına neden olur.

Ancak uygulama programcısı istisnayı ele alırsa uygulamanın normal akışı korunur, yani kodun geri kalanı yürütülür.

İstisnasız sorun yönetimi

Try-catch bloğu kullanmıyorsak sorunu anlamaya çalışalım.

örnek 1

TryCatchExample1.java

 public class TryCatchExample1 { public static void main(String[] args) { int data=50/0; //may throw exception System.out.println('rest of the code'); } } 
Şimdi Test Edin

Çıktı:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Yukarıdaki örnekte gösterildiği gibi, kodun geri kalanı yürütülmez (bu durumda, kodun geri kalanı bildirim yazdırılmaz).

İstisnadan sonra 100 satır kod olabilir. İstisna işlenmezse, istisnanın altındaki kodun tamamı yürütülmeyecektir.

İstisna yönetimi yoluyla çözüm

Yukarıdaki problemin çözümünü Java try-catch bloğu ile görelim.

Örnek 2

TryCatchExample2.java

 public class TryCatchExample2 { public static void main(String[] args) { try { int data=50/0; //may throw exception } //handling the exception catch(ArithmeticException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Şimdi Test Edin

Çıktı:

dizilist.sort
 java.lang.ArithmeticException: / by zero rest of the code 

Yukarıdaki örnekte gösterildiği gibi, kodun geri kalanı yürütülür, yani kodun geri kalanı beyanı yazdırılır.

Örnek 3

Bu örnekte ayrıca kodu istisna atmayacak bir try bloğunda tuttuk.

TryCatchExample3.java

 public class TryCatchExample3 { public static void main(String[] args) { try { int data=50/0; //may throw exception // if exception occurs, the remaining statement will not exceute System.out.println('rest of the code'); } // handling the exception catch(ArithmeticException e) { System.out.println(e); } } } 
Şimdi Test Edin

Çıktı:

 java.lang.ArithmeticException: / by zero 

Burada try bloğunda bir istisna meydana gelirse blok kodunun geri kalanının çalışmayacağını görebiliriz.

Örnek 4

Burada istisnayı ana sınıf istisnasını kullanarak ele alıyoruz.

TryCatchExample4.java

 public class TryCatchExample4 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception by using Exception class catch(Exception e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Şimdi Test Edin

Çıktı:

 java.lang.ArithmeticException: / by zero rest of the code 

Örnek 5

İstisna durumunda özel bir mesaj yazdırmak için bir örnek görelim.

TryCatchExample5.java

 public class TryCatchExample5 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // handling the exception catch(Exception e) { // displaying the custom message System.out.println('Can't divided by zero'); } } } 
Şimdi Test Edin

Çıktı:

 Can't divided by zero 

Örnek 6

Bir catch bloğundaki istisnayı çözmek için bir örnek görelim.

TryCatchExample6.java

 public class TryCatchExample6 { public static void main(String[] args) { int i=50; int j=0; int data; try { data=i/j; //may throw exception } // handling the exception catch(Exception e) { // resolving the exception in catch block System.out.println(i/(j+2)); } } } 
Şimdi Test Edin

Çıktı:

 25 

Örnek 7

Bu örnekte, try bloğunun yanı sıra istisna kodunu da bir catch bloğunun içine alıyoruz.

TryCatchExample7.java

 public class TryCatchExample7 { public static void main(String[] args) { try { int data1=50/0; //may throw exception } // handling the exception catch(Exception e) { // generating the exception in catch block int data2=50/0; //may throw exception } System.out.println('rest of the code'); } } 
Şimdi Test Edin

Çıktı:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Burada catch bloğunun istisna kodunu içermediğini görebiliriz. Bu nedenle, istisna kodunu bir try bloğunun içine alın ve catch bloğunu yalnızca istisnaları işlemek için kullanın.

Örnek 8

Bu örnekte, oluşturulan istisnayı (Aritmetik İstisna) farklı türde bir istisna sınıfıyla (ArrayIndexOutOfBoundsException) ele alıyoruz.

TryCatchExample8.java

 public class TryCatchExample8 { public static void main(String[] args) { try { int data=50/0; //may throw exception } // try to handle the ArithmeticException using ArrayIndexOutOfBoundsException catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Şimdi Test Edin

Çıktı:

 Exception in thread 'main' java.lang.ArithmeticException: / by zero 

Örnek 9

Başka bir denetlenmeyen istisnayı ele almak için bir örnek görelim.

TryCatchExample9.java

 public class TryCatchExample9 { public static void main(String[] args) { try { int arr[]= {1,3,5,7}; System.out.println(arr[10]); //may throw exception } // handling the array exception catch(ArrayIndexOutOfBoundsException e) { System.out.println(e); } System.out.println('rest of the code'); } } 
Şimdi Test Edin

Çıktı:

tekrar bourne kabuğu
 java.lang.ArrayIndexOutOfBoundsException: 10 rest of the code 

Örnek 10

Kontrol edilen istisnayı ele almak için bir örnek görelim.

TryCatchExample10.java

 import java.io.FileNotFoundException; import java.io.PrintWriter; public class TryCatchExample10 { public static void main(String[] args) { PrintWriter pw; try { pw = new PrintWriter('jtp.txt'); //may throw exception pw.println('saved'); } // providing the checked exception handler catch (FileNotFoundException e) { System.out.println(e); } System.out.println('File saved successfully'); } } 
Şimdi Test Edin

Çıktı:

 File saved successfully