programing tip

오류 발생 ( 'msg') vs 새 오류 발생 ( 'msg')

itbloger 2020. 6. 12. 21:38
반응형

오류 발생 ( 'msg') vs 새 오류 발생 ( 'msg')


var err1 = Error('message');
var err2 = new Error('message');

차이점이 뭐야? 크롬 콘솔에서 그것들을 보면 동일하게 보입니다. 객체와 동일한 __proto__체인 에서 동일한 속성 . 거의 Error공장 처럼 행동하는 것 같습니다 .

어느 것이 정확하고 왜?


둘 다 괜찮습니다. 이것은 사양에 명시 적으로 언급되어 있습니다 .

... 따라서 함수 호출 Error(…)new Error(…)동일한 인수를 가진 객체 생성 표현식 과 동일합니다.


Error다른 기본 생성자처럼 공장처럼 행동 않습니다 Array, Object등 같은 모든 체크 뭔가를 if (!(this instanceof Array)) { return new Array(arguments); }. (그러나 참고 String(x)new String(x)매우 다른, 마찬가지로위한 것입니다 NumberBoolean.)

즉, 오류가 발생하더라도 Error객체 를 던질 필요조차 없습니다 ... throw 'Bad things happened';작동 합니다.
디버깅을 위해 객체 리터럴을 던질 수도 있습니다.

throw {message:"You've been a naughty boy",
       context: this,
       args: arguments,
       more:'More custom info here'};

참고 URL : https://stackoverflow.com/questions/13294658/throw-errormsg-vs-throw-new-errormsg

반응형