16 Ekim 2026 - 01:29
PHP'de JSON Hatalarını JSON_THROW_ON_ERROR ile Yakalama Görseli
PHP

PHP'de JSON Hatalarını JSON_THROW_ON_ERROR ile Yakalama

0 Yorumlar

json_encode() veya json_decode() başarısız olduğunda hata kontrol edilmezse uygulama boş yanıt, null veya eksik veriyle çalışmaya devam edebilir. JSON_THROW_ON_ERROR, JSON hatalarını JsonException olarak yakalanabilir hâle getirir.

Decode işleminde null belirsizliğini kaldırın

PHP
try {
    $data = json_decode($payload, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
    error_log('JSON decode failed: ' . $e->getMessage());
    http_response_code(400);
    exit('Geçersiz JSON');
}

JSON içindeki geçerli null değeriyle hata sonucu dönen null böylece birbirine karışmaz.

Encode hatasını da aynı yöntemle yönetin

PHP
try {
    $json = json_encode(
        $response,
        JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE
    );
} catch (JsonException $e) {
    error_log('JSON encode failed: ' . $e->getMessage());
    http_response_code(500);
    exit('Yanıt üretilemedi');
}

JSON_UNESCAPED_UNICODE Türkçe karakterleri okunabilir biçimde bırakır; tek başına hata yönetimi sağlamaz.

Geçersiz UTF-8 kaynağını düzeltin

Veritabanı bağlantısı, dosya veya dış servis farklı karakter kodlaması döndürüyorsa JSON üretimi başarısız olabilir. Hatalı baytları sessizce yok eden bayraklara geçmeden önce veri kaynağının UTF-8 ayarını düzeltin.

JSON_PARTIAL_OUTPUT_ON_ERROR kullanımına dikkat edin

PHP kılavuzunda JSON_PARTIAL_OUTPUT_ON_ERROR seçeneğinin JSON_THROW_ON_ERROR üzerinde önceliği olduğu belirtilir. Kısmi veri kabul edilmeyecek API yanıtlarında bu iki bayrağı birlikte kullanmayın.

İstemciye iç hata ayrıntısı göstermeyin

Exception mesajı loga yazılabilir; dosya yolu, SQL veya kişisel veri içerebilecek ayrıntıları son kullanıcıya döndürmeyin. İstemciye sabit hata kodu, sunucu loguna bağlama kimliği eklemek daha güvenlidir.

Başvuru: PHP JSON sabitleri ve JSON_THROW_ON_ERROR RFC'si.

Benzer Yazılar

Yorumlar (0)

Henüz yorum yok. İlk yorum yapan sen ol!

Yorum Yap