2013-11-27 5 views
10

, 나는 실행하는 경우이 :JavaScript로 NetworkError를 잡는 방법? 크롬의 자바 스크립트 콘솔에서

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

나는 의도적으로 예상 오류 얻을 :

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

을 그러나 정의되지 않은 NetworkError에 대한 오류가 발생합니다.

ReferenceError: NetworkError is not defined 

어떻게 NetworkError를 잡을 수 있습니까?

답변

11

내가 무엇을 의미하는 것은 생각 :

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

나는 오류 NetworkError의 인스턴스 인 생각하지만, 이러한 방식으로 발생하지 않는 다음 onreadystatechange 이벤트에

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

위대한 작품입니다. 나는 또한 질문해야한다 : Chrome의 JS 콘솔에서는 콘솔의 오른쪽 하단에 오류를 집계하면서 왼쪽에 빨간색 X가 표시된 "GET (url)"을 표시합니다. 이것도 잡을 수있는 방법이 있습니까? – Synthead

+1

Afaik 크롬 콘솔은 이러한 방식으로 실패한 요청을 모두 보여 주며, 오류를 포착하면 코드가 깨질 수 있습니다. –

0

봐. 응답 상태를 확인할 수 있습니다.

+2

readystate는 send()가 호출 될 때까지 변경되지 않지만 send() 호출은 예외를 생성합니다. – broofa