머리말
Node.js 응용 프로그램에서 발생할 수있는 여러 유형의 오류가 있습니다. 예를 들어, 구문 오류 또는 런타임 오류가 발생하면 JavaScript 오류가 트리거됩니다. 존재하지 않거나 액세스하지 않은 파일에 액세스하려고하면 시스템 오류가 트리거됩니다. JavaScript 오류 및 시스템 오류 오류 외에도 사용자는 오류를 사용자 정의 할 수도 있습니다.
1. 오 분류
Node.js는 JavaScript 런타임 플랫폼이며 응용 프로그램 오류는 모두 Error 인스턴스 또는 Error 서브 클래스 인스턴스입니다.
Node.js 응용 프로그램에는 네 가지 가능한 오류가 있습니다.
1. 표준 JavaScript 오류 (예 :
<EvalError> : eval() 호출이 실패 할 때 던졌습니다
<SyntaxError> : 불법 JavaScript 구문을 사용할 때 던져졌습니다
<RangeError> : 값이 지정된 범위 내에 있지 않을 때 던져
<ReferenceError> : 정의되지 않은 변수가 사용될 때 던졌습니다
<TypeError> : 오류 유형 매개 변수를 전달할 때
<URIError> : 글로벌 URI 함수가 잘못 사용될 때 던졌습니다.
2. 시스템 오류. 이 유형의 오류는 존재하지 않는 파일을 열려고 시도하거나 폐쇄 된 Soket 등을 통해 데이터를 보내는 것과 같은 기본 시스템에 의해 트리거됩니다.
3. 사용자 정의 오류, 이러한 오류는 응용 프로그램 코드의 사용자가 트리거됩니다.
4. 어설 션 오류. 코드가 법적 논리를 위반하면이 유형의 오류는 Node.js assert 모듈에 의해 트리거됩니다.
2. JavaScript 오류 및 시스템 오류
2.1 JavaScript 오류 및 사용자 정의 오류
표준 JavaScript 오류는 JavaScript 언어에 의해 제공되며 구문 오류 또는 API의 부적절한 사용을 나타냅니다. 모든 오류는 Error 클래스의 인스턴스이며 표준 JavaScript 오류는 오류가 발생할 때 언어 자체에 의해 구축됩니다.
오류를 사용자 정의 할 때 생성자를 사용하여 인스턴스를 만듭니다.
> 새로운 오류 ( '오류가 발생했습니다. 오류 메시지입니다'); 오류 : 오류 메시지가 replserver.runbound에서 bound (domain.js : 248 : 27)에서 replserver.defaulteval (repls.js : 248 : 27)에서 1 : 7에서 오류 메시지가 발견되었습니다. Emitone (Events.js : 82 : 20)에서 (Repls.js : 82 : 20) replserver.interface._ interface._inline (readline.js : 549 : 8)의 Emitone (Events.js : 82 : 20)에서 (Events.js : 82 : 20)에서 (Events.JS : 82 : 20) _TTYWRITE. (Readline.js : 826 : 14)
위와 같이, 우리는 오류를 사용자 정의하고 Throw 키워드를 사용하여 오류를 던졌습니다. 이 오류 객체에는 오류 message 와 오류 스택 정보 stack 포함됩니다. 예외 캡처 후이 정보는 다음 두 속성을 통해 액세스 할 수 있습니다.
1. error.message 오류 메시지
2. error.stack 오류 스택 추적 정보
오류 인스턴스 자체의 속성 외에도 일부 오류 속성을 사용자 정의 할 수도 있습니다. 예를 들어, 상태를 나타내는 속성 상태를 사용자 정의합니다.
var error = new Error ( '방문한 페이지는 존재하지 않습니다'); error.status = 404;
2.2 시스템 오류
시스템 오류는 JavaScript 오류 Error 객체의 확장으로 프로그램이 처리 할 수있는 작동 오류를 나타내며 이러한 오류 메시지는 시스템 수준에서 생성됩니다. Error 인스턴스의 속성 외에도 시스템 오류 인스턴스에는 다음 속성도 포함됩니다.
1. error.syscall 실패한 시스템 호출 정보를 나타내는 문자열
2. error.errno 정수 오류 코드
3. error.code 일반적으로 대문자 E로 시작하는 오류 문자열을 나타냅니다.
3. 예외 캡처
Node.js는 이벤트 중심 및 비동기식 프로그래밍 기반을 채택합니다. 즉, try / catch 비동기식으로 처리 할 때 발생하는 오류를 포착 할 수 없습니다. 이 경우 다음 두 가지 방법을 사용하여 오류를 포착하거나 전달할 수 있습니다.
node.js 콜백 함수의 예외 캡처
node.js에는 많은 비동기 API가 있으며, 이후 콜백 함수 콜백을 통해 처리됩니다. 오류가 발생하면 일반적으로 Error 객체가 callback 함수의 첫 번째 매개 변수에 포함됩니다. 오류가 발생하지 않으면 첫 번째 매개 변수는 null 입니다. 좋다:
const fs = require ( 'fs'); fs.readfile ( '존재하지 않는 파일', (err, data) => {if (err) {console.error ( '파일 오류', err); return;} // 기타 프로세스});이벤트 기반 오류 처리
객체가 EventEmitter 인 경우 오류的'error' 통해 오류를 캡처하여 처리 할 수 있습니다.
const net = require ( 'net'); const connection = net.connect ( 'localhost'); // 'error'이벤트 핸들러 추가 : connection.on ( 'error', (err) => {// 서버가 연결을 재설정하거나 지정된 서버에 연결할 수 없으면 여기에서 오류가 console.error로 전달됩니다.요약
위는 Node.js의 일부 오류 유형에 대한 요약입니다. node.js의 오류 유형을 이해할 수 있다면 오류 및 예외 포획을 더 잘 처리 할 수 있습니다. 이 기사의 내용이 모든 사람에게 도움이되기를 바랍니다.