수색…


소개

Error 객체를 생성하는 방법과 Node.js에서 오류를 던지고 처리하는 방법을 배웁니다.

오류 처리의 모범 사례와 관련된 향후 편집.

Error 객체 생성 중

새로운 오류 (메시지)

값 새로운 오류 객체 생성 message 에 설정되는 message 생성 된 객체의 속성. 일반적으로 message 인수는 Error 생성자에 문자열로 전달됩니다. 그러나 message 인수가 문자열이 아닌 object이면 Error 생성자는 전달 된 객체의 .toString() 메서드를 호출하고 생성 된 오류 객체의 message 속성에 해당 값을 설정합니다.

var err = new Error("The error message");
console.log(err.message); //prints: The error message
console.log(err);
//output
//Error: The error message
//    at ... 

각 오류 객체에는 스택 추적이 있습니다. 스택 추적은 오류 메시지의 정보를 포함하며 오류가 발생한 위치를 표시합니다 (위 출력에는 오류 스택이 표시됨). 오류 객체가 생성되면 시스템은 현재 행의 오류 스택 추적을 캡처합니다. 스택 트레이스를 얻으려면 생성 된 오류 객체의 스택 특성을 사용하십시오. 아래 두 줄은 동일합니다.

console.log(err);
console.log(err.stack);

던지는 오류

Throwing 오류는 예외가 처리되지 않고 노드 서버가 충돌하는 경우 예외를 의미합니다.

다음 행에서 오류가 발생합니다.

throw new Error("Some error occurred"); 

또는

var err = new Error("Some error occurred");
throw err;

또는

throw "Some error occurred";

마지막 예제 (문자열 던짐)는 좋은 습관이 아니므로 권장하지 않습니다 (항상 Error 객체의 인스턴스 인 오류 발생).

참고로 여러분이 에러를 throw 시스템은 그 라인에서 충돌을 일으킬 것입니다 (예외 처리기가 없다면), 그 라인 이후에 어떤 코드도 실행되지 않습니다.

var a = 5;
var err = new Error("Some error message");
throw err; //this will print the error stack and node server will stop
a++; //this line will never be executed
console.log(a); //and this one also

그러나이 예제에서 :

var a = 5;
var err = new Error("Some error message");
console.log(err); //this will print the error stack
a++; 
console.log(a); //this line will be executed and will print 6

try ... catch 블록

try ... catch 블록은 예외를 처리하기위한 것으로 예외를 기억하면 오류가 아닌 throw 된 오류를 의미합니다.

try {
    var a = 1;
    b++; //this will cause an error because be is undefined
    console.log(b); //this line will not be executed
} catch (error) {
    console.log(error); //here we handle the error caused in the try block
}

try 블록 b++ 에서 오류가 발생하고 그 오류가 catch 블록으로 전달되었거나 catch 블록에서 동일한 오류가 발생하거나 약간의 수정을 가한 다음 throw 할 수 있습니다. 다음 예제를 보자.

try {
    var a = 1;
    b++;
    console.log(b);
} catch (error) {
    error.message = "b variable is undefined, so the undefined can't be incremented"
    throw error;
}

위의 예에서 error 객체의 message 속성을 수정 한 다음 수정 된 error 를 throw합니다.

try 블록의 오류를 통해 catch 블록에서 처리 할 수 ​​있습니다.

try {
    var a = 1;
    throw new Error("Some error message");
    console.log(a); //this line will not be executed;
} catch (error) {
    console.log(error); //will be the above thrown error 
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow