2013-03-19 1 views
0

그래서 다음과 같은 ajax 쿼리가 실패합니다. ajaxError가 호출되고 예외가 발생합니다. 그러나 불행히도 예외는 발생하지 않습니다. 어떤 아이디어가 그것을 잡는 방법?jQuery 오류 처리기가 throw되지 않습니다.

try { 
    function ajaxError(request, type, message) { 
    throw 'ajaxerror ' + type + ' ' + message; 
    } 

    jQuery.ajax({ 
     url: 'http://nonexisting-example.com', 
     error: ajaxError, 
    }); 
} 
catch (error) { 
    alert('This: ' + error); 
} 

답변

0

왜냐하면 ajax는 비동기식이기 때문에 ajaxError func가 실제로 catch 블록이라고 불리는 경우 이미 전달되었습니다.

function ajaxError(request, type, message) { 
    try { 
     throw 'ajaxerror ' + type + ' ' + message; 
    } catch (error) { 
     alert('This: ' + error); 
    } 

    } 
    jQuery.ajax({ 
     url: 'http://nonexisting-example.com', 
     error: ajaxError, 
    }); 

또는 당신은

+0

는 내가 필요하면 통과 할 수있는 방법 당신의 비동기 오류 잡기 위해 술집/서브 패턴을 적용 할 수 있습니다 : 당신이 아약스 통화 중 trowed하여 오류를 포착 할 경우는 다음과 같이 뭔가를 할 수 ajax 콜백에서 오류가 발생했습니다. 그러나 .done (function() {callback (data, error);}와 같은 콜백은 정당화 될 것이다. 방금 더 멋진 솔루션이 있기를 기대하면서 검색 중에 원래 솔루션이 아름답다는 것을 잊어 버렸습니다. 그러나 잘 쓰여진 답변에 감사드립니다. – mhv

관련 문제