WhatsApp ile yaz
← Blog

PHP Hata Yönetimi ve Exception Nedir?

📅 20.10.2026

PHP, web uygulamalarının çalışması sırasında oluşabilecek hataları yönetmek için zengin bir mekanizma sunar. Hata yönetimi, kodun güvenilirliğini, güvenliğini ve kullanıcı deneyimini doğrudan etkiler. PHP’de hata yönetimi iki temel yapı üzerinden gerçekleştirilir: geleneksel hata raporlama ve exception (istisna) işleme.


Hata Türleri ve Önemi

PHP’de hatalar üç ana kategoriye ayrılır: Notice, Warning ve Error. Notice, genellikle küçük ama potansiyel sorunları gösterir; Warning, uygulamanın çalışmasını durdurmadan uyarı verir; Error ise kritik bir sorunu işaret eder ve script’i sonlandırır. Bu hataların doğru yönetilmesi, uygulamanın stabil kalmasını sağlar.


error_reporting ile Hata Seviyesini Belirleme

error_reporting fonksiyonu, hangi hata seviyelerinin raporlanacağını kontrol eder. Örneğin:


error_reporting(E_ALL); // Tüm hataları gösterir
ini_set('display_errors', 1); // Ekranda hata göster
ini_set('log_errors', 1); // Hataları dosyaya logla

Üretim ortamında genellikle hatalar kullanıcıya gösterilmez; bunun yerine log dosyalarına kaydedilir. Bu, güvenlik açıklarını azaltır.


try…catch ile Exception İşleme

Exception, hataların kontrol edilebilir bir şekilde yönetilmesini sağlar. try bloğu içinde hata oluşturabilecek kodu yazarken, catch bloğu bu hatayı yakalar ve uygun bir işlem yapar:


try {
    $pdo = new PDO($dsn, $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $pdo->query('SELECT * FROM users');
    while ($row = $stmt->fetch()) {
        echo $row['name'];
    }
} catch (PDOException $e) {
    error_log($e->getMessage()); // Logla
    echo 'Veritabanı hatası. Lütfen daha sonra tekrar deneyin.';
}

PDOException, PDO ile ilgili hataları yakalamak için kullanılır. Diğer sınıflar için de benzer exception sınıfları bulunur.


Özel Exception Sınıfı Oluşturma

Projeler büyüdükçe, kendi hata sınıflarınızı tanımlamak kodun okunabilirliğini artırır. Örneğin:


class ValidationException extends Exception {
    public function __construct($message = "Geçersiz veri", $code = 400) {
        parent::__construct($message, $code);
    }
}

Bu sınıf, form doğrulama hatalarını tek bir yerden yönetmenizi sağlar.


User-defined Error Handler ile İleri Düzey Hata Yönetimi

set_error_handler fonksiyonu ile kendi hata işleyicilerinizi tanımlayabilirsiniz. Böylece hataları loglamak, e-posta göndermek veya özel mesajlar göstermek mümkün olur:


function myErrorHandler($errno, $errstr, $errfile, $errline) {
    $log = "[{$errno}] {$errstr} in {$errfile} on line {$errline}";
    error_log($log);
    if ($errno === E_USER_ERROR) {
        echo "Önemli hata! Lütfen sistem yöneticisiyle iletişime geçin.";
        exit(1);
    }
    return true;
}
set_error_handler('myErrorHandler');

Bu yaklaşım, hata yönetimini merkezi bir noktadan kontrol etmenizi sağlar.


Hata Loglarını Yönetmek

Hata logları, sorunları analiz etmek için kritik öneme sahiptir. PHP’nin ini ayarları ile log dosyasının konumu ve boyutu kontrol edilebilir:


ini_set('error_log', '/var/log/php_errors.log');
ini_set('log_errors_max_len', 0); // Log satır uzunluğunu sınırsız yap

Log dosyalarını periyodik olarak temizlemek veya döngüsel loglama yapmak, disk alanı sorunlarını önler.


Hata Yönetimi ile Güvenlik

Hataların kullanıcıya gösterilmesi, uygulamanın iç yapısını açığa çıkarır. Örneğin, veritabanı bağlantı hatası mesajı, sunucu yapılandırmasını açıklayabilir. Bu nedenle üretim ortamında display_errors kapatılmalı, yalnızca loglanmalıdır. Ayrıca, exception mesajları da hassas bilgileri içermez.


SEO Açısından Hata Yönetimi

Arama motorları, kullanıcı deneyimini göz önünde bulundurur. Hatalı sayfalar, düşük sayfa kalitesi sinyali verir. Hataları düzgün yöneterek, 404 ve 500 hatalarının sayfalarınızı etkileyen olumsuz etkilerini minimize edersiniz. Örneğin, 404 hatalarında kullanıcıyı ana sayfaya yönlendirmek yerine ilgili içerik önerileri sunmak SEO’ya olumlu katkı sağlar.


Best Practices – En İyi Uygulamalar

1. Hata Seviyesini Ortamlara Göre Ayarlayın: Geliştirme ortamında tüm hataları gösterin, üretimde sadece loglayın.
2. Exception’leri Kullanarak Akış Kontrolü: Kritik hataları try…catch ile yakalayın.
3. Log Dosyalarını Düzenli Olarak Temizleyin: Disk dolmasını önleyin.
4. Özel Hata Sayfaları Oluşturun: Kullanıcı dostu hata mesajları sunun.
5. Hata Yönetimini Merkezi Yapın: set_error_handler ile tek bir fonksiyon kullanın.
6. Güvenlik Açıklarını Engelleyin: Hata mesajlarını gizleyin ve sadece gerekli bilgileri gösterin.


Sonuç

PHP’de hata yönetimi, uygulamanızın güvenilirliğini, güvenliğini ve kullanıcı memnuniyetini doğrudan etkileyen kritik bir konudur. Doğru yapılandırılmış error_reporting, etkili try…catch blokları, özel exception sınıfları ve merkezi hata işleyicileri ile hataları kontrol altında tutabilir, SEO performansınızı koruyabilirsiniz. Bu stratejileri uygulayarak, hem geliştirici deneyiminizi hem de son kullanıcı deneyimini önemli ölçüde iyileştirebilirsiniz.