Eğitimde, örnekler yardımıyla Java'daki farklı istisna işleme yaklaşımlarını öğreneceğiz.
Son eğitimde Java istisnalarını öğrendik. İstisnaların bir programın yürütülmesini anormal şekilde sonlandırdığını biliyoruz.
Bu nedenle istisnaları ele almak önemlidir. Java'daki istisnaları ele almak için farklı yaklaşımların bir listesi.
- dene… bloğu yakala
- sonunda engelle
- anahtar kelime atar ve atar
1. Java try… catch bloğu
Try-catch bloğu, Java'daki istisnaları işlemek için kullanılır. İşte try… catch
bloğun sözdizimi :
try ( // code ) catch(Exception e) ( // code )
Burada, try
bloğun içine bir istisna oluşturabilecek kodu yerleştirdik . Her try
bloğun ardından bir catch
blok gelir.
Bir istisna meydana geldiğinde, catch
blok tarafından yakalanır . catch
Blok olmadan kullanılamaz try
blokta.
Örnek: try… catch ile istisna işleme
class Main ( public static void main(String() args) ( try ( // code that generate exception 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
Örnekte, bir sayıyı şuna bölmeye çalışıyoruz 0
. Burada, bu kod bir istisna oluşturur.
İstisnayı ele almak için kodu bloğun 5 / 0
içine koyduk try
. Şimdi bir istisna meydana geldiğinde, try
bloğun içindeki kodun geri kalanı atlanır.
catch
Blok catch bloğunun içinde istisna ve ifadeleri yürütülür yakalar.
Bloktaki ifadelerden hiçbiri try
bir istisna oluşturmazsa, catch
blok atlanır.
2. Java nihayet bloke
Java'da, finally
bir istisna olup olmadığına bakılmaksızın blok her zaman yürütülür.
finally
Blok isteğe bağlıdır. Ve her try
blok için sadece bir finally
blok olabilir.
finally
Bloğun temel sözdizimi şöyledir:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Bir istisna meydana gelirse, finally
blok, bloktan sonra yürütülür try… catch
. Aksi takdirde, try bloğundan sonra yürütülür. Her try
blok için yalnızca bir finally
blok olabilir.
Örnek: Nihayet bloğu kullanarak Java Özel Durum İşleme
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
Çıktı
ArithmeticException => / sıfıra göre Bu son bloktur
Yukarıdaki örnekte, bloğun içindeki bir sayıyı 0'atry
bölüyoruz. Burada, bu kod bir ArithmeticException
.
İstisna, catch
blok tarafından yakalanır . Ve sonra finally
blok yürütülür.
Not : finally
Bloğu kullanmak iyi bir uygulamadır . Bunun nedeni, aşağıdaki gibi önemli temizleme kodlarını içerebilmesidir:
- Return, Continue veya Break ile yanlışlıkla atlanabilecek kod
- bir dosyayı veya bağlantıyı kapatmak
3. Java anahtar kelime atar ve atar
Java throw
anahtar sözcüğü açıkça tek bir istisna atmak için kullanılır.
Bir throw
istisna olduğumuzda , programın akışı try
bloktan bloğa hareket eder catch
.
Örnek: Java atışı kullanarak istisna işleme
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Çıktı
"Main" iş parçacığında istisna java.lang.ArithmeticException: Main.divideByZero'da (Main.java:5) Main.main'de (Main.java:9) 0'a bölmeye çalışılıyor
Yukarıdaki örnekte, anahtar kelimeyi ArithmeticException
kullanarak açıkça atıyoruz throw
.
Benzer şekilde, throws
anahtar kelime, yöntem içinde ortaya çıkabilecek istisna türlerini bildirmek için kullanılır. Yöntem bildiriminde kullanılır.
Örnek: Java anahtar kelime atar
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )
Çıktı
java.io.FileNotFoundException: test.txt (Sistem belirtilen dosyayı bulamıyor)
Bu programı çalıştırdığımızda, test.txt dosyası yoksa, sınıfı genişleten FileInputStream
bir atar .FileNotFoundException
IOException
findFile()
Yöntem belirtir IOException
atılabilir. main()
Yöntem bu yöntemi çağırır ve o atılır eğer istisna işler.
Bir yöntem istisnaları işlemezse, onun içinde meydana gelebilecek istisnaların türü throws
maddede belirtilmelidir .
Daha fazla bilgi edinmek için Java fırlatma ve fırlatma sayfasını ziyaret edin.