> 웹 프론트엔드 > JS 튜토리얼 > Javascript_javascript 스킬에서 오류 코드의 파일 및 라인 번호를 얻는 코드

Javascript_javascript 스킬에서 오류 코드의 파일 및 라인 번호를 얻는 코드

WBOY
풀어 주다: 2016-05-16 18:19:19
원래의
1263명이 탐색했습니다.

try-catch 메소드는 원래 catch 문에서 Error 객체를 수신합니다(사용자 정의 예외 객체를 발생시킬 수도 있음). Firefox의 Error 개체에는 다음 속성이 있습니다.

message - 오류 메시지
fileName - 오류 코드가 있는 파일을 나타냅니다.
lineNumber - 오류 코드의 줄 수
stack - error 스택 정보
name - 예외 개체 이름/유형
그러나 IE에서는 Error 개체에 다음 속성만 있습니다.

name - 예외 개체 이름/유형(다를 수 있음) Firefox에 표시된 이름에서
메시지 - 오류 메시지
설명 - 메시지 속성
번호와 동일 - ErrorCode, 오류 코드, 기본적으로 일반 개발자에게는 의미가 없음
즉, 우리는 오류 코드의 파일 이름과 오류 줄 수에 대해 가장 원하는 정보입니다. 나중에 학교 포럼에서 조언을 구한 결과 window 아래에 onerror 개체(전역 개체)가 있다는 것을 알게 되었습니다. 이 개체 또는 창 속성은 오류 처리 기능에 바인딩됩니다. 스크립트에서 포착되지 않은 오류는 결국 창 계층으로 전파되고 onerror-bound 핸들러에 의해 처리됩니다. 관련 문서를 확인한 결과 바운드 오류 처리 함수가 세 개의 매개변수를 수신하는 것으로 나타났습니다.

view sourceprint?function onError(message,url,line){}

매우 기쁩니다. 이 메커니즘은 IE 및 Firefox와 호환됩니다.

예:

코드 복사 코드는 다음과 같습니다.

function doSomething(){
var lastErrorHandler = window.onerror;
window.onerror = function(message,url,line){
// 오류 보고
alert("Execute " url " in 파일 코드의 " 줄 " 줄에서 오류가 발생했습니다. 오류 메시지: " message);
window.onerror = lastErrorHandler;
// 이 오류가 계속 확산되는 것을 원하지 않습니다.
return true ;
};
/ / 실수로 오류가 발생했습니다...

window.onerror = lastErrorHandler;
doSomething(); 🎜>


여기서 AttachEvent를 사용하지 않는 이유는 Detach가 더 불편하기 때문이다. 이 오류 처리를 전역적으로 적용하려면 attachmentEvent(Firefox에서는 addEventListener)를 사용할 수 있습니다.

Safari(Chrome은 동일한 커널을 사용함)와 Opera 모두 이 메커니즘을 지원하지 않으므로 이 방법을 사용하여 예외 정보를 캡처할 수 없습니다. try-catch만 사용할 수 있습니다. Javascript_javascript 스킬에서 오류 코드의 파일 및 라인 번호를 얻는 코드
실험 후 Safari의 Error 개체에는 다음 속성이 있습니다.

message - 오류 메시지
line - 오류 코드가 있는 줄 수
sourceId - one 번호, 무슨 뜻인지 모르겠습니다.
sourceURL - 오류 코드가 있는 파일을 나타냅니다.
name - 예외 개체 이름/유형
Opera의 오류 개체에는 다음과 같은 속성이 있습니다.

메시지 - 오류 메시지 정보
opera#sourceloc - 오류 코드의 줄 번호
스택 추적 - 오류 스택 정보
이 두 브라우저의 오류 개체는 우리에게 충분한 정보를 제공합니다. 디버깅에 사용합니다. 다음에 해야 할 일은 이 두 가지 방법을 결합하여 이러한 오류가 다른 브라우저에서 잘 보고될 수 있도록 하는 것입니다.

다음 코드는 다양한 브라우저에서 예외를 보고하는 기능을 요약합니다.





코드 복사
코드
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿