2013-11-27 9 views
10

、私はこの実行する場合:JavaScriptでNetworkErrorを捕まえるには? ChromeのJavaScriptコンソールで

NetworkError: A network error occurred. 

私はこれをキャッチしたいので、私が使用します:

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.'); 
    } 
} 

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

を、私は意図的に予想されるエラーを取得しますしかし、定義されていないNetworkErrorに関するエラーが表示されます。

ReferenceError: NetworkError is not defined 

NetworkErrorをキャッチするにはどうすればよいですか?

答えて

11

私はあなたが何を意味するのかたと思う:

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

私はエラーがNetworkErrorのインスタンスであると考えていますが、この方法で投げられません。

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

これは素晴らしい動作します。また、ChromeのJSコンソールでは、コンソールの右下にエラーを集計しながら、左側に赤色のXが表示されたまま「GET(URL)」が表示されます。これもキャッチする方法はありますか? – Synthead

+1

Afaikクロムコンソールはこのようにすべての失敗したリクエストを表示します。エラーをキャッチするとコードが破損しません。 –

0

onreadystatechangeイベントに見て。応答のステータスを取得できます。

+2

readystateはsend()が呼び出されてからsend()コールが例外を生成するまで変化しません。 – broofa

関連する問題