CodeBlanks Logo Icon CodeBlanks

JSON hata yönetimi

PHP kursu · İleri seviye · Ders 50/92

json_last_error() ve json_last_error_msg() ile JSON hatalarını yakalamayı öğrenirsin.

Hataları last_error ile yakala

decode işlevi geçersiz bir dize alırsa null döndürür ve sessizce hata bayrağı ayarlar. Bu hatayı last_error işleviyle kod olarak, last_error_msg işleviyle kısa ileti olarak okursun.

Hata yoksa last_error işlevi ERROR_NONE sabitini döndürür. Sözdizimi hatasında ERROR_SYNTAX döner ve ileti Syntax error olur. Bu yüzden çözümlemeden sonra durumu denetlemek iyi bir alışkanlıktır.

THROW_ON_ERROR ile özel durum fırlat

Geleneksel yöntemde hatayı last_error ile denetlersin. Modern bir alternatif, THROW_ON_ERROR seçeneğini kullanmaktır. Bu seçenek decode veya encode işlevine verildiğinde hata durumunda bir özel durum fırlatılır.

Bu sayede try/catch bloğuyla hatayı tek yerde yakalarsın. İki yöntemden birini seçersin: ya her çağrıdan sonra last_error denetlersin ya da THROW_ON_ERROR ile try/catch kullanırsın.

Uygulama Geçersiz dizenin hata iletisini yazdır

$text değişkeni geçersiz bir dize tutuyor. decode işleviyle çözümle, sonra last_error_msg işleviyle hata iletisini ekrana yazdır.

Örnek çözümü göster
decode ile $text'i çözümle, sonra echo ile last_error_msg() çağır.
Örnek çözüm:
decode($text, true);
echo last_error_msg();

Kendini test et

  1. Hata işlevlerini ve sabitleri eşleştir

    json_last_error
    hata kodunu döndürür
    json_last_error_msg
    hata iletisini döndürür
    ERROR_NONE
    hata yok durumu
    ERROR_SYNTAX
    sözdizimi hatası
  2. Hangi işlev hata iletisini metin olarak verir?

    • encode işlevi
    • decode işlevi
    • last_error işlevi
    • last_error_msg işlevi
    Cevabı göster

    last_error_msg işlevi — Doğru. last_error_msg işlevi hata iletisini kısa metin olarak döndürür.

  3. Hata kodunu denetle

    $text = '{invalid}';
    decode($text, true);
    if (____ !== ERROR_NONE) {
        echo last_error_msg();
    }
    Cevabı göster
    $text = '{invalid}';
    decode($text, true);
    if (last_error() !== ERROR_NONE) {
        echo last_error_msg();
    }

İleri seviye bölümündeki tüm dersler