2010-12-17 24 views
167

'dan özel durum yakalamak için uygun yol Bazen bir 404 yanıtı içeren bir yanıtta JSON.parse kullanıyorum. 404 döndürdüğü durumlarda, bir istisna yakalamanın ve ardından başka bir kodu yürütmenin bir yolu var mı?JSON.parse

data = JSON.parse(response, function (key, value) { 
    var type; 
    if (value && typeof value === 'object') { 
     type = value.type; 
     if (typeof type === 'string' && typeof window[type] === 'function') { 
      return new(window[type])(value); 
     } 
    } 
    return value; 
}); 
+3

404 yanıt 'XMLHttpRequest', JSON.parse' ile ilgili değil. Bana kod parçacığını gösterirseniz, size yardımcı olabilirim. –

+0

data = JSON.parse (yanıt, işlev (anahtar, değer) { var tür; ise (value && typeof value === 'object') { type = value.type; ise (typeof type ===) 'string' && typeof window [tür] === 'function') { new (window [tür]) (değer); } } dönüş değeri; – prostock

+0

Bir iframe içine bir şey gönderip sonra içeriği geri oku json parse ile iframe ... Yani bazen bir json dize – prostock

cevap

256

i bir iframe içine bir şey göndermeden sonra bazen bir json dize

değil ... json ayrıştırmak ile iframe içeriğini geri okunan bu deneyin:

if(response) { 
    try { 
     a = JSON.parse(response); 
    } catch(e) { 
     alert(e); // error in the above string (in this case, yes)! 
    } 
} 
+6

Eğer try bloğu daha fazla deyim içeriyorsa, özel durumu e.name == "SyntaxError" ile tanımlayabilirsiniz. Bir değerlendirme yok – user1158559

+0

teşekkürler bana – Darkcoder

3

Bunu deneyebilirsiniz:

var jsonString = "b"; 
 

 
try { 
 
    a = JSON.parse(jsonString); 
 
} catch (e) { 
 
    alert(e); // You get an error. 
 
}
JSON.parse argümanı() JSON nesnesi haline ayrıştırılamaz eğer

-1

Bu söz gidermek olmaz.

Promise.resolve(JSON.parse('{"key":"value"}')).then(json => { 
    console.log(json); 
}).catch(err => { 
    console.log(err); 
}); 
+2

Ama bu 'JSON.parse' tarafından atılan istisnayı yakalamıyor – Abdel

İlgili konular