문제

처리되지 않은 JavaScript 예외를 기록하고자합니다. 예외가 잡히지 않을 때 해고되는 이벤트가 있습니까? 브라우저에서 JavaScript 오류를 일으키기 전에 예외를 포착하려고하지만 시도/캐치 내에서 전체 응용 프로그램을 실행하지 않겠습니다. 모든 도움이 감사하겠습니다. 감사!

업데이트 : TVANFOSSON은 OnError를 가능성으로 지적했습니다. 사양의 일부가 아니며 IE 또는 Gecko 기반 브라우저에서만 사용할 수 있습니다.

자세한 내용은 - http://books.google.com/books?id=tkszhx-xkzyc&pg=pa386&lpg=pa386&dq=safari+onerror+javaScript&source=web&ots=gqagbpunjg&sig=iG=iG=iBctoqs0ah_eazsbwlga9V5flyo#ppa38, m

onerror 지원 테이블 - http://www.quirksmode.org/dom/events/error.html

모질라의 문서 - https://developer.mozilla.org/en/dom/window.onerror

WebKit Bug Report- https://bugs.webkit.org/show_bug.cgi?id=8519

도움이 되었습니까?

해결책

Onerror 핸들러를 사용해보십시오. 문서 MDN에서. 이렇게하면 오류가 감지 될 때 무언가를 할 수 있지만 시도/캐치 블록이 될 수있는 우아한 방식으로 계속할 수는 없습니다. 브라우저의 의심 할 여지 없이이 처리 방법에서 의심 할 여지없이 차이가 있습니다.

다른 팁

이 바이올린을 확인하십시오.

http://jsfiddle.net/xysra/1/

window.onerror = function (msg, url, line) {
    console.log("Caught[via window.onerror]: '" + msg + "' from " + url + ":" + line);
    return true; // same as preventDefault
};

window.addEventListener('error', function (evt) {
    console.log("Caught[via 'error' event]:  '" + evt.message + "' from " + evt.filename + ":" + evt.lineno);
    console.log(evt); // has srcElement / target / etc
    evt.preventDefault();
});


throw new Error("Hewwo world.  I crash you!!!");

throw new Error("Hewwo world.  I can only crash you once... :(");

어떤 인쇄 :

Caught[via window.onerror]: 'Uncaught Error: Hewwo world.  I crash you!!!' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:21
Caught[via 'error' event]:  'Uncaught Error: Hewwo world.  I crash you!!!' from http://fiddle.jshell.net/xYsRA/1/show/:32 fiddle.jshell.net:26
ErrorEvent {lineno: 32, filename: "http://fiddle.jshell.net/xYsRA/1/show/", message: "Uncaught Error: Hewwo world.  I crash you!!!", clipboardData: undefined, cancelBubble: false…}
 fiddle.jshell.net:27\

메모:

  • "return true" / "evt.preventDefault ()"라인을 제거하면 오류가 기록 된 후 JS 콘솔에서 일반적인 방식으로 인쇄됩니다.

  • 위의 진술과는 달리, Window.onerror는 내가 테스트 한 모든 브라우저에서 작동했습니다. 그러나 AddeventListener 방법은 어쨌든 더 좋으며 더 풍부한 의미를 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top