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ı
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