Sobes.tech
Middle

Java'da istisna mekanizmasından bahsedin.

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da istisna mekanizması, programın çalışması sırasında oluşan hataları ve diğer istisnai durumları işlemek için kullanılır.

İstisna mekanizmasının temel öğeleri:

  • İstisna (Exception): Programın normal akışını bozan olayları temsil eden nesne.
  • try, catch, finally blokları: İstisnaları işlemek için kullanılır.
    • try: İstisna oluşabilecek kod bloğu.
    • catch: try bloğunda belirli bir türde istisna oluşursa çalışan kod bloğu.
    • finally: Her zaman çalışan, istisna olup olmamasına bakılmaksızın çalışan kod bloğu. Kaynakları serbest bırakmak için kullanılır.
  • throw anahtar kelimesi: Açıkça bir istisna oluşturmak ve atmak için kullanılır.
  • throws anahtar kelimesi: Bir metodun imzasında kullanılır ve metodun atabileceği istisna türlerini belirtir.

Java'da istisna hiyerarşisi:

  • Throwable: Tüm istisnalar ve hatalar için temel sınıf.
    • Error: Programın genellikle kurtulamayacağı ciddi sorunları temsil eder (örneğin, OutOfMemoryError).
    • Exception: Programın yakalayabileceği ve işleyebileceği istisnaları temsil eder.
      • RuntimeException (Unchecked Exceptions): Açıkça işleme veya bildirime gerek olmayan istisnalar (örneğin, NullPointerException, ArrayIndexOutOfBoundsException).
      • Checked Exceptions: try-catch bloğu ile işlenmeli veya throws ile bildirilmeli (örneğin, IOException, FileNotFoundException).

İstisna işleme örneği:

public class ExceptionExample {

    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Sonuç: " + result);
        } catch (ArithmeticException e) {
            // ArithmeticException istisnasını işleme
            System.err.println("Hata: Sıfıra bölme izin verilmez.");
            System.err.println("İstisna detayları: " + e.getMessage());
            e.printStackTrace(); // çağrı yığınını gösterir
        } finally {
            // Bu blok her zaman çalışır
            System.out.println("Finally bloğu çalıştı.");
        }
    }

    public static int divide(int a, int b) {
        // b = 0 ise ArithmeticException atabilir
        return a / b;
    }
}

throws kullanımı örneği:

import java.io.FileReader;
import java.io.IOException;

public class ThrowsExample {

    public static void readFile(String filename) throws IOException {
        // IOException atabilir
        FileReader reader = new FileReader(filename);
        // Dosya ile daha fazla çalışma
    }

    public static void main(String[] args) {
        try {
            readFile("mevcut_olmayan_dosya.txt");
        } catch (IOException e) {
            System.err.println("Dosya okuma hatası: " + e.getMessage());
        }
    }
}