Menu
CoddyTech

Finally Bloğu

Coddy'nin Java Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 41 / 59.

finally bloğu, bir istisna oluşsun ya da oluşmasın, try-catch bloklarından sonra yürütülecek kodu içerir. Genellikle dosyaları veya veritabanı bağlantılarını kapatmak gibi temizleme işlemleri için kullanılır.

İşte bir try-catch-finally bloğunun temel yapısı:

try {
   // İstisna fırlatabilecek kod
} catch (ExceptionType e) {
   // İstisnayı ele alacak kod
} finally {
   // Her zaman çalışan kod
}

Bir sayaçla ilgili bir örneğe bakalım:

int counter = 0;
try {
   int result = 10 / 0;
   // Bu bir istisna fırlatacak
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3;
   // Bu her zaman çalışacak
}

Yukarıdaki kodu çalıştırdıktan sonra counter şunu içerir:

3

catch parantezlerindeki tür, bu bloğun hangi hataları ele alacağına karar verir. Yaygın iki tanesi, bir tamsayının sıfıra bölünmesiyle oluşturulan ArithmeticException ve metin bir sayı olmadığında Integer.parseInt() tarafından oluşturulan NumberFormatException türleridir. Tek bir catch aynı anda birden fazla türü ele alabilir:

try {
   int value = Integer.parseInt(text);
   int result = 10 / value;
} catch (ArithmeticException | NumberFormatException e) {
   // her ikisini de işler
} finally {
   // her zaman çalışır
}

Bunun yerine Exception yakalamak daha kapsamlıdır: her ikisini ve diğer tüm istisnaları ele alır.

challenge icon

Görev

Kolay

processNumber adlı, iki bağımsız değişken alan bir yöntem oluşturun:

  1. Tamsayıya dönüştürülecek bir String (number)
  2. Bir istisnanın oluşturulup oluşturulmayacağını belirleyen bir boolean (shouldThrow)

Yöntem şunları yapmalıdır:

  1. Bir result değişkenini 0 olarak başlatın
  2. try bloğunda:
    • shouldThrow true ise 10'u 0'a bölün
    • Aksi takdirde number dizesini tamsayıya dönüştürüp result içine kaydedin
  3. catch bloğunda: result değerini -1 olarak ayarlayın
  4. finally bloğunda: result değerine 100 ekleyin
  5. result değerini bir dize olarak döndürün

Kendin dene

import java.util.Scanner;

public class Main {
    public static String processNumber(String number, boolean shouldThrow) {
        // Kodunuzu buraya yazın
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String number = scanner.nextLine();
        boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
        
        System.out.println(processNumber(number, shouldThrow));
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi