JavaScript 오류 처리 메커니즘 소개

1,try-catch 문장
ECMA-262 제3판은try-catch 문장을 도입하여 자바스크립트에서 이상을 처리하는 표준적인 방식으로 한다.
구문:

try{
 //  
}catch (error){
 //  
}
즉, 우리는 오류가 발생할 수 있는 모든 코드를try 문장 블록에 놓고, 오류 처리 코드를catch 블록에 두어야 한다.
try-catch 문장의 논리는:try 블록에 있는 모든 코드에 오류가 발생하면 코드 실행 과정을 즉시 종료하고 다음에catch 블록을 실행합니다.이 때,catch 블록은 오류 정보를 포함하는 대상을 수신합니다.
주의: 이 잘못된 대상을 사용하고 싶지 않더라도 이름을 지어야 합니다.
이 대상은 서로 다른 브라우저에 다른 정보를 포함할 수 있지만, 오류 메시지를 저장하는 메시지 속성이 있고, 오류 형식을 저장하는name 속성이 있습니다. (모든 브라우저가 있는 것은 아닙니다.)

try{
 
}catch (error){
 console.log(error.message);
}
크로스 브라우저에서 프로그래밍할 때, 메시지 속성만 사용하는 것이 가장 좋다.
1.1 finally 자구
finally 자구를 사용할 때, 그 코드는 어떻게든 실행됩니다. 즉, 정상적으로 실행되었든 잘못되었든,finally 자구는 실행됩니다.심지어 리턴 문장은finally 자구의 실행을 막지 못한다.
다음 예제를 참조하십시오.

function test(){
	try{
   console.log('a');
	 return 2;
	}catch(error){
   console.log('b');
	}finally{
   console.log('c');
	}
}
console.log(test()); 
// 
a
c
2
실행 결과에서 알 수 있듯이,return 문장은finally 자문의 실행을 막지 않았고,finally 자문이 실행된 후에,return 문장의 값을 되돌려줍니다.
2. 오류 유형
코드를 실행하는 동안 발생할 수 있는 오류는 여러 종류가 있습니다.모든 오류는 대응하는 오류 유형이 있고, 오류가 발생하면 해당하는 유형의 오류 대상을 던진다.
ECMA-262는 다음 7의 오류 유형을 정의합니다.
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
Error는 기본 유형이며 다른 오류 유형은 상속됩니다.모든 오류 유형은 같은 속성을 공유합니다.
(1) EvalError 유형
EvalError 유형의 오류는 eval() 함수를 사용하여 이상이 발생했을 때 발생합니다.간단하게 말하면 eval () 을 함수로 호출하지 않으면 이상을 던진다.예:

new eval() //  EvalError
eval = foo; //  EvalError
참고 ES5에는 이미 표시되지 않습니다.
(2) RangeError 유형
RangeError 유형의 오류는 값이 해당 범위를 초과할 때 발생합니다.주로 몇 가지 상황이 있는데 하나는 수조의 길이가 음수이고 다른 하나는 Number 대상의 방법 매개 변수가 범위를 초과하고 함수 창고가 최대치를 초과하는 것이다.

var item = new Array(-20); //  RangeError 
(3) ReferenceError 유형
객체를 찾을 수 없는 경우 ReferenceError가 발생합니다.일반적으로 존재하지 않는 변수에 접근할 때 이런 오류가 발생한다.

var obj = x; //  x ReferenceError
(4) SyntaxError 유형
SyntaxError는 코드를 해석하는 동안 발생하는 구문 오류입니다.

var 1a; //  , SyntaxError
(5) TypeError 유형
변수에 의외의 유형이 저장되어 있거나 존재하지 않는 방법에 접근할 때 오류가 발생합니다.

var o = new 10; // TypeError
(6) URIERROR 유형
URIERROR는 URI 관련 함수의 매개 변수가 정확하지 않을 때 발생하는 오류입니다. 주로 encodeURI (), decodeURI (), encodeURIComponent (), escape (), unescape () 등 여섯 가지 함수와 관련됩니다.
2.2 오류 발생
try-catch 문장과 어울리는 또한throw 조작부호는 사용자 정의 오류를 수시로 던지는 데 사용됩니다.오류를 던질 때,throw 조작부호에 값을 지정해야 합니다. 이 값은 모든 종류가 될 수 있습니다.

throw 1;
throw 'tg';
throw true;
throw {name: 'tg'};
2.3 Error 객체
모든 오류는 Error 구조 함수의 실례입니다.Error 구조 함수는 오류 알림을 표시하는 매개 변수를 받아들여서 실례적인 메시지 속성에서 이 매개 변수를 읽을 수 있습니다.
JavaScript에서 Error 객체의 인스턴스에는 오류 발생 시 알림 메시지를 나타내는 메시지 속성이 있어야 합니다.대부분의 JavaScript 엔진에서 Error 실례는name와stack 속성이 있을 수 있습니다. 각각 잘못된 이름과 잘못된 창고를 표시합니다.

var err = new Error(' ');
err.message; // " "
2.4 사용자 정의 오류
또한 사용자 정의 오류 메시지를 만들 수 있습니다. 가장 자주 사용하는 오류 유형은 Error, RangeError, ReferenceError 및 TypeError입니다.

throw new Error(' ');
throw new RangeError(' ');
또한 원형 체인을 이용하여 Error를 계승하여 사용자 정의 오류 유형을 만들 수 있습니다.

function CustomError(message){
 this.name = 'CustomError';
 this.message = message;
}

CustomError.prototype = new Error();
throw new CustomError(' ');
3. 오류(error) 이벤트
try-catch를 통해 처리되지 않은 오류는 윈도우 대상의 error 이벤트를 촉발합니다.
onerror 이벤트 처리 프로그램은 이벤트 대상을 만들지 않지만, 오류 메시지, 오류가 있는 URL, 줄 번호 세 가지 인자를 받아들입니다.

window.onerror = function(message, url, line){

};
이벤트 처리 프로그램에서false를 되돌려주면 브라우저가 오류를 보고하는 기본 행동을 막을 수 있습니다

window.onerror = function(message, url, line){
 return false;
};
4. 디버깅 기술
4.1 alert 방법
이전에는 디버깅할 코드에 alert () 함수를 삽입해서 실행이 되었는지 여부를 보고 어디가 잘못되었는지 판단하는 것이 번거로웠습니다. 왜냐하면 alert () 는 후속 코드의 실행을 막을 수 있기 때문입니다. (alert 탄창을 닫지 않으면) 디버깅 후에 청소해야 하기 때문입니다.
4.2 console
브라우저가 계속 개선됨에 따라 현재의 브라우저에는 자바스크립트 컨트롤러가 있습니다. 우리는 이 컨트롤러에 메시지를 출력할 수 있습니다. 예를 들어 가장 자주 사용하는 console 대상의 일반적인 방법은 다음과 같습니다.
  • error(message): 오류 메시지를 컨트롤러에 기록합니다
  • info(message): 정보성 메시지를 컨트롤러에 기록합니다
  • log(message): 일반 메시지를 컨트롤러에 기록합니다
  • warn(message): 경고 메시지를 컨트롤러에 기록합니다
  • 
    function test(){
     console.log(' :' + (1 + 2));
    }
    4.3 throw
    throw를 사용하여 오류를 내보냅니다.
    다음은 JavaScript 오류 처리 메커니즘에 대한 상세한 내용입니다. JavaScript 오류 처리 메커니즘에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기