하나. 잘못 분류
1. 구문 오류
구문 분석 오류라고도하는 것은 기존 프로그래밍 언어로 컴파일 할 때 발생하며 해석 할 때 JavaScript에서 발생합니다. 이러한 오류는 코드의 예기치 않은 문자로 직접 발생하며 직접 컴파일/해석 할 수 없습니다. 예를 들어, 코드 라인에는 닫는 브래킷이 부족하여 구문 오류가 발생합니다. 구문 오류가 발생하면 코드를 실행할 수 없습니다. JavaScript에서는 동일한 스레드의 코드 만 구문 오류의 영향을받습니다. 다른 스레드 및 다른 외부 참조 파일의 코드는 오류가 포함 된 코드에 의존하지 않으면 계속 실행할 수 있습니다.
2. 런타임 오류
예외라고도합니다 (Compile/Interpreter 이후 예외). 이 시점에서 문제는 코드의 구문에 있지 않지만 경우에 따라 작업이 완료되기를 시도하는 경우 불법입니다. 예를 들어.
Window.openmyFile ();
OpenMyFile () 메소드가 존재하지 않기 때문에 브라우저는 예외를 반환합니다. 예외는 발생하는 스레드에만 영향을 미치며 다른 JavaScript 스레드는 정상적으로 계속 실행될 수 있습니다.
둘. 처리 오류
1. Oneerror 이벤트 처리 기능
오류를 처리 할 때 JavaScript를 지원하는 첫 번째 메커니즘입니다. 페이지에서 예외가 발생하면 Window 개체에서 오류 이벤트가 발생합니다. 예를 들어.
코드 사본은 다음과 같습니다.
<html>
<헤드>
<title> onerror 예제 </title>
<script type = "text/javaScript">
window.onerror = function () {
경고 ( "오류가 발생했습니다!");
}
</스크립트>
</head>
<body onload = "function1 ()">
</body>
</html>
위 코드에서는 페이지가로드되는 동안 존재하지 않는 함수를 호출하려고하면 예외가 제기됩니다. "오류가 발생한"오류 메시지가 나타납니다. 그러나 브라우저의 오류 메시지도 표시됩니다. 브라우저에 숨어있는 방법? 진정한 방법을 반환하십시오.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
window.onerror = function () {
경고 ( "오류가 발생했습니다!");
진실을 반환하십시오.
}
</스크립트>
1) 오류 메시지를 제거하십시오
OnError 핸들러는 오류의 정확한 특성을 결정하기 위해 세 가지 종류의 정보를 제공합니다.
i) 오류 메시지 - 주어진 오류의 경우 브라우저에 동일한 정보가 표시됩니다.
ii) URL- 오류가 발생한 파일;
줄 번호 - 주어진 URL에서 오류가 발생한 줄 번호입니다.
액세스 방법은 다음 예제를 참조하십시오.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
Window.onerror = function (smessage, surl, sline) {
ALERT ( "오류가 발생했습니다!/n" + smessage + "/nurl :" + surl + "/nline 번호 :" + Sline);
진실을 반환하십시오.
}
</스크립트>
2) 이미지 로딩 오류
Window 객체는 OnError 이벤트 처리 기능을 지원하는 유일한 객체는 아니며 이미지 객체를 지원합니다. 파일의 존재하지 않아 이미지를 성공적으로로드 할 수없는 경우 이미지에서 오류 이벤트가 트리거됩니다. 예를 살펴 보겠습니다.
<img src =”amigo.jpg”oneerror =”alert ( '이미지를로드하는 동안 오류가 발생했습니다') "/>
위의 예는 HTML에서 OnError 이벤트 핸들러 기능을 직접 할당합니다. 물론 스크립트를 통해 이벤트 처리 기능을 할당 할 수도 있습니다. 이미지의 SRC 특성을 설정하기 전에 페이지가 완전히로드 될 때까지 기다려야합니다. 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
<html>
<헤드>
<title> 이미지 오류 테스트 </title>
<script type = "text/javaScript">
함수 handleload () {
document.images [0] .onerror = function () {
경고 ( "그림을로드하는 동안 오류가 발생했습니다!");
};
document.images [0] .src = "amigo.jpg";
}
</스크립트>
</head>
<body onload = "handleload ()">
<img/>
<body>
</html>
참고 : Window Object의 OnError 이벤트 핸들러 기능과 달리 이미지의 OnError 이벤트에는 추가 정보 매개 변수가 있습니다.
3) 구문 오류를 처리합니다
OnError는 구문 오류를 처리 할 수도 있습니다. 그러나 이벤트 핸들러가 페이지에 나타나는 첫 번째 코드 여야한다는 점에 유의해야합니다. 이벤트 핸들러를 설정하기 전에 구문 오류가 발생하면 이벤트 핸들러는 쓸모가 없기 때문입니다.
참고 : 구문 오류는 코드 실행이 완전히 중지됩니다.
참고 : OnError 이벤트 핸들러 사용의 주요 문제는 BOM의 일부이므로 표준이 동작을 제어 할 수 없다는 것입니다. 따라서 다른 브라우저는이 이벤트를 사용하여 오류를 크게 처리합니다. 예를 들어. IE에서 오류 이벤트가 발생하면 일반 코드가 계속 실행되고 모든 변수와 데이터가 유지되며 OnError 이벤트 핸들러 기능을 통해 액세스 할 수 있습니다. Mozilla에서는 일반 코드 실행이 끝나고 오류가 발생하기 전에 모든 변수와 데이터가 파괴됩니다.
2. 시도해보십시오
ECMPScript Third Edition은 시도… 캐치 문을 소개합니다. 예를 들어.
코드 사본은 다음과 같습니다.
노력하다 {
Window.openFile1 ();
Alert ( "성공적으로 OpenFile1 메소드");
} catch (예외) {
경고 ( "예외가 발생했습니다!");
} 마지막으로 {
Alert ( "Try .. Catch Test Ends!");
}
Java와 달리 ECMAScript 표준은 시도에서 하나의 Catch 문만 가질 수 있습니다. Catch 문은 JavaScript가 약한 언어이며 Catch 절에서 특정 유형의 예외를 지정할 수 없기 때문에 Catch 문의 하나만 가질 수 있습니다. 오류 유형에 관계없이 동일한 캐치 문으로 처리됩니다. 그러나 Mozilla는이를 확장하고 여러 캐치 문을 추가 할 수 있으며,이 방법을 사용하는 것이 권장되지 않습니다.
마지막으로 예외가 발생하는지 여부에 관계없이 실행될 코드를 포함하는 데 사용되었으며, 이는 열린 링크를 닫고 리소스를 자유롭게하는 데 유용합니다.
1) 중첩 시도… 캐치 성명서
캐치 조항의 오류 문제를 처리하는 데 사용되는 예를 살펴 보겠습니다. 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
노력하다 {
평가 ( "a ++ b");
} catch (oexception) {
경고 ( "오류가 발생했습니다!");
노력하다 {
var aerror = 새 배열 (100000000000000000000000000000000000000000000000000000000000000000);
} catch (예외) {
Alert ( "캐치 절에서 오류가 발생했습니다!");
}
} 마지막으로{
경고 ( "완료")
}
2) 오류 개체
오류가 발생하면 JavaScript에는 던지기에 오류 기본 클래스가 있습니다. 두 가지 특성이 있습니다.
i) 이름 - 잘못된 유형을 나타내는 문자열
ii) 메시지 - 실제 오류 메시지.
오류 객체의 이름은 클래스에 해당하며 다음 값 중 하나 일 수 있습니다.
EvalError : 오차는 eval () 함수에서 발생합니다.
RangeError : 숫자 값은 JavaScript가 나타내는 범위를 초과합니다.
참조 오류 : 불법 참조가 사용되었습니다.
SyntaxError : eval () 함수 호출에서 구문 오류가 발생했으며 브라우저에서 점점 더 오류 가보고되었으며 시도를 통해 처리 할 수 없었습니다.
TypeError : 변수의 유형은 필요한 것이 아닙니다.
Urierror : Encodeuri 또는 Decodeuri 기능에서 오류가 발생했습니다.
3) 오류 유형을 결정하십시오
다음 두 가지 방법을 사용하여 오류 유형을 결정할 수 있습니다. 첫 번째 방법은 다음과 같이 예외의 이름 속성을 기반으로합니다.
코드 사본은 다음과 같습니다.
노력하다 {
평가 ( "a ++ b");
} catch (oexception) {
if (oexception.name = "syntaxError") {
Alert ( "SyntaxError가 발생했습니다!");
} 또 다른 {
경고 ( "기타 오류가 발생했습니다!");
}
}
연산자 인스턴스는 두 번째에 사용되며 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
노력하다 {
평가 ( "a ++ b");
} catch (oexception) {
if (syntaxError의 oexception 인스턴스) {
Alert ( "SyntaxError가 발생했습니다!");
} 또 다른 {
경고 ( "기타 오류가 발생했습니다!");
}
}
4) 던지기 예외 던지기 명세서
ECMAScript의 세 번째 판에서는 의도적으로 예외를 던지는 데 사용됩니다. 던져진 오류 객체는 문자열, 숫자, 부울 값 또는 실제 객체 또는 오류 객체 일 수 있습니다 (생성자는 하나의 함수, 즉 오류 메시지 만 있습니다). EG1. 새 오류를 던지십시오 ( "오류가 발생했습니다!");
EG2.
코드 사본은 다음과 같습니다.
함수 addtwonumber (a, b) {
if (arguments.length <2) {
새 오류를 던지십시오 ( "두 숫자를 통과해야합니다!");
}
}
노력하다 {
결과 = addtwonumber (90);
} catch (oexception) {
if (syntaxError의 oexception 인스턴스) {
ALERT ( "syntaxError :" + oexception.message);
} else if (oexception instanceof error) {
경고 (oexception.message);
}
}
위는이 기사에 설명 된 모든 내용입니다. 나는 당신이 그것을 좋아할 수 있기를 바랍니다.