2011-09-01 1 views
1

뭔가 잘못되었을 때 예외를 throw하는 Javascript 함수가 있습니다. 나는이 행동에 너무 익숙하다. 언젠가는 함수가 예외를 던지지 않았기 때문에 언젠가는 20 분 이상이 걸린다. 단지 조용히 실패했다.jQuery를 통해로드 된 자바 스크립트 Ajax가 Firebug에서 예상되는 예외를 throw하지 않습니다.

Firefox에서 Firebug 플러그인을 사용하여 다음 코드를 시도해보십시오.

function myfunc(key) 
{ 
    alert('I started'); 
    if(!key) 
    throw 'myfunc: Invalid arguments'; 
} 

그런 다음 코드로 두 번째 HTML 페이지를 만들 :

<script type="text/javascript"> 
myfunc(null); 
alert('Exception was before me!'); 
</script> 

및 jQuery를 $의 아약스 기능의 첫 번째 페이지에서 두 번째 HTML 페이지를로드 기능이있는 HTML 페이지를 작성합니다.

코드가 올바르게 실행되지만 Firebug 콘솔에 예외가 기록되지 않습니다.

uncaught exception: myfunc: Invalid arguments 

을하지만 의해 실행하면 아무것도 로그 아웃하지가 : 당신이 바로 frst HTML 페이지에서 동일한 기능이 myfunc (널)를 실행하면

, 당신은 iimediately 방화범에 빨간색 선은 그 자체 말하는거야 jQuery (jQuery는 $ .ajax 이후에 스크립트를 실행하기 위해 eval을 사용한다).

jQuery 자체가 예외를 포착하고 Javascript를 평가하는 동안 예외를 무시한다는 것을 의미합니까? 내 예외 사항을 처리하도록 jQuery에 알릴 수있는 방법이 있습니까?

답변

0

것 같다 사용하는 것보다 console.log('Exception message');를 사용해야합니다. 1.6으로 업그레이드되었으며 jQuery $ .ajax 호출로 자바 스크립트 코드가로드되고 평가되는 경우에도 예외가 발생합니다.

0

이 내용을 올바르게 이해하면 작동 여부와 상관없이 실제로 성공 여부를 확인한 다음 상태 코드 또는 오류 메시지를 반환하려고합니다. 이는 서버에 문제가 있으면 ajax가 반환하지 않기 때문입니다. 상태 코드를 사용하면 브라우저에서 서버에 오류를 발생시키는 대신 상황을 알 수 있습니다.

그렇지 않은 이유는 서버가 요청이 아니라 오류라고 가정하고 거기에 오류를 던지기 때문입니다. 당신이 방화범 예외를보고 싶다면

+0

jQuery가 'myfunc : Invalid arguments'예외를 다시 발생 시키길 원하지만 실제로 발생하지는 않습니다. 첫 번째 HTML 페이지에서 myfunc (null)을 바로 실행하면 Firebug에 빨간색 줄이 표시됩니다. "잡히지 않는 예외 : myfunc : 잘못된 인수"와 나는 무슨 일이 일어 났는지 알고 있습니다. 그러나 AJAX 스크립트에서 이런 일이 발생하면 예외가 사라집니다. – JustAMartin

0

이 버그 또는 jQuery를 1.4 누락 된 기능이며, 오히려 alert('Exception message');

관련 문제