일반적인 오류 처리 메커니즘
기본 오류 유형
1.1 SyntaxError 객체
syntaxerror
는 코드를 해석할 때 발생하는 문법 오류입니다.//
var 1a;
// Uncaught SyntaxError: Invalid or unexpected token
//
console.log 'hello');
// Uncaught SyntaxError: Unexpected string
Uncaught SyntaxError: Invalid or unexpected token
: 발견되지 않은 문법 오류: 무효 또는 의외의 표지.위 코드의 오류는 모두 문법 해석 단계에서 발견할 수 있기 때문에 던진다
SyntaxError
.첫 번째 오류 힌트는 token
불법이며, 두 번째 오류 힌트는 문자열이 요구에 부합되지 않는다는 것이다.1.2 Reference Error 객체
ReferenceError
는 존재하지 않는 변수를 인용할 때 발생하는 오류입니다.//
unknownVariable
// Uncaught ReferenceError: unknownVariable is not defined
또 다른 터치 장면은 함수의 운행 결과나this에 값을 부여할 수 없는 대상에게 값을 분배하는 것이다.
//
console.log() = 1
// Uncaught ReferenceError: Invalid left-hand side in assignment
// this
this = 1
// ReferenceError: Invalid left-hand side in assignment
위 코드가 함수
console.log
의 운행 결과와 this
에 대한 값을 부여한 결과 ReferenceError
오류가 발생했습니다.1.3 RangeError 객체
RangeError
는 값이 유효 범위를 초과할 때 발생하는 오류입니다.배열 길이가 음수이고 Number 객체의 메소드 매개 변수가 범위를 초과하며 함수 스택이 최대값을 초과하는 경우가 주로 있습니다.//
new Array(-1)
// Uncaught RangeError: Invalid array length
1.4 TypeError 객체
TypeError 객체는 변수 또는 매개변수가 예상 유형이 아닐 때 발생하는 오류입니다.예를 들어 문자열, 브리 값, 수치 등 원시 형식의 값에 new 명령을 사용하면 new 명령의 매개 변수는 구조 함수이기 때문에 이런 오류를 던질 수 있다.
new 123
// Uncaught TypeError: number is not a func
var obj = {};
obj.unknownMethod()
// Uncaught TypeError: obj.unknownMethod is not a function
위 코드의 두 번째 경우 호출 대상이 존재하지 않는 방법도
TypeError
오류를 던진다. obj.unknownMethod
의 값은 undefined
이지 함수가 아니기 때문이다.1.5 URIerror 객체
URIError
는 URI 관련 함수의 매개 변수가 정확하지 않을 때 던진 오류로 주로 encodeURI()
,decodeURI()
,encodeURIComponent()
,decodeURIComponent()
,escape()
와 unescape()
등 6개 함수와 관련된다.decodeURI('%2')
// URIError: URI malformed
1.6 EvalError 객체
eval 함수가 제대로 실행되지 않았을 때
EvalError
오류가 발생합니다.이 오류 형식은 더 이상 사용하지 않습니다. 단지 이전 코드와 호환성을 확보하기 위해서 계속 보존합니다.1.7 Error 인스턴스 객체
JavaScript가 분석 또는 실행될 때 오류가 발생하면 엔진이 오류 객체를 던집니다.자바스크립트 원본 제공
Error
구조 함수, 모든 버퍼링 오류가 이 구조 함수의 실례입니다.var err = new Error(' ');
err.message // " "
위 코드에서 우리는
Error
구조 함수를 호출하여 실례 대상err
을 생성한다.Error
구조 함수는 하나의 매개 변수를 받아들여 오류 알림을 표시하고 실례적인 message
속성에서 이 매개 변수를 읽을 수 있다.Error
실례 대상을 던진 후 전체 프로그램은 오류가 발생한 곳에서 중단되고 더 이상 실행되지 않습니다.JavaScript 언어 표준은
Error
실례 대상은 message
속성이 있어야 하며 오류가 발생했을 때의 알림 정보를 표시하고 다른 속성은 언급하지 않았다.대부분의 자바스크립트 엔진은 Error
실례에 대해 name
속성과 stack
속성을 제공하는데, 각각 잘못된 이름과 잘못된 창고를 표시하지만, 그것들은 비표준적이며, 모든 실현이 다 있는 것은 아니다.message:
name: ( )
stack: ( )
name
와 message
두 속성을 사용하면 어떤 오류가 발생했는지 대략적으로 이해할 수 있다.if (error.name) {
console.log(error.name + ': ' + error.message);
}
stack
속성은 오류가 발생했을 때의 창고를 보는 데 사용됩니다.function throwit() {
throw new Error('');
}
function catchit() {
try {
throwit();
} catch(e) {
console.log(e.stack); // print stack trace
}
}
catchit()
// Error
// at throwit (~/examples/throwcatch.js:9:11)
// at catchit (~/examples/throwcatch.js:3:9)
// at repl:1:5
위 코드에서 오류 창고의 가장 안쪽은
throwit
함수이고 그 다음은 catchit
함수이며 마지막은 함수의 운행 환경이다.상기 6가지 파생 오류는 원시적
Error
대상과 함께 구조 함수이다.개발자는 그것들을 사용하여 수동으로 오류 대상의 실례를 생성할 수 있다.이 구조 함수들은 오류 알림 정보message
를 대표하는 매개 변수를 받아들인다.var err1 = new Error(' !');
var err2 = new RangeError(' , !');
var err3 = new TypeError(' , !');
err1.message // " !"
err2.message // " , !"
err3.message // " , !"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.