2013-11-27 19 views
10

, kaçarsam bu:JavaScript'te NetworkError nasıl yakalanır? Chrome'un JavaScript konsolunda

var that = new XMLHttpRequest(); 
that.open('GET', 'http://this_is_a_bad_url.com', false); 
that.send(); 

Ben kasten beklenen hatayı alıyorum:

NetworkError: A network error occurred. 

Bunu yakalamak istiyorum, bu yüzden kullanın:

var that = new XMLHttpRequest(); 
that.open('GET', 'http://this_is_a_bad_url.com', false); 
try { 
    that.send(); 
} catch(exception) { 
    if(exception instanceof NetworkError) { 
    console.log('There was a network error.'); 
    } 
} 

Ancak, NetworkError tanımlanmayan bir hata alıyorum:

ReferenceError: NetworkError is not defined 

NetworkError'ı nasıl yakalarım?

cevap

11

Ben ne demek olduğunu düşünüyorum:

if(exception.name == 'NetworkError'){ 
    console.log('There was a network error.'); 
} 

Ben Hata NetworkError bir örneğidir inanıyoruz, ama bu şekilde atılmış yoktur: onreadystatechange olayın içine

throw { 
    name: 'NetworkError', 
    message: 'A network error occurred.' 
    // etc... 
} 
+1

Bu harika çalışıyor. Ayrıca şunu da sormalıyım: Chrome'un JS konsolunda, konsolun sağ alt köşesindeki hatayı tararken solunda kırmızı bir X ile birlikte "GET (url)" ifadesini gösterir. Bunu yakalamanın bir yolu var mı? – Synthead

+1

Afaik chrome konsolu bu şekilde tüm başarısız istekleri gösterir, hatayı yakalamanızı engeller hata kodu –

0

bak. Yanıtın durumunu öğrenebilirsiniz.

+2

readystate gönderene kadar() çağrılmaz, ancak send() çağrısı istisna oluşturan şeydir. – broofa