내가 좀 늦었 어 :),하지만 토론은 꽤 흥미 롭기 때문에 여기에 간다 ... 오류 핸들러를 만들고 싶다고 가정하고 다음과 같은 예외 핸들러 클래스를 사용하고 있다고 가정한다.
function errorHandler(error){
this.errorMessage = error;
}
errorHandler.prototype. displayErrors = function(){
throw new Error(this.errorMessage);
}
그리고 다음과 같이 코드를 래핑합니다.
try{
if(condition){
//whatever...
}else{
throw new errorHandler('Some Error Message');
}
}catch(e){
e.displayErrors();
}
대부분의 경우 별도의 .js 파일에 오류 처리기가있을 것입니다.
firefox 또는 chrome의 오류 콘솔에서 표시된 코드 줄 번호 (및 파일 이름)는 디버깅을 위해 실제로 원하는 'errorHandler'예외가 아닌 'Error'예외를 발생시키는 줄 (파일)입니다. 쉬운. 자신의 예외를 던지는 것은 좋지만 대규모 프로젝트에서 예외를 찾는 것은 특히 유사한 메시지가있는 경우 상당한 문제가 될 수 있습니다. 따라서 할 수있는 일은 실제 빈 Error 객체에 대한 참조를 오류 처리기에 전달하는 것이며, 해당 참조는 원하는 모든 정보를 보유 할 것입니다 (예를 들어 파이어 폭스에서는 파일 이름과 줄 번호 등을 얻을 수 있습니다.). ; 크롬에서 Error 인스턴스의 'stack'속성을 읽으면 비슷한 것을 얻습니다.) 간단히 말해서 다음과 같이 할 수 있습니다.
function errorHandler(error, errorInstance){
this.errorMessage = error;
this. errorInstance = errorInstance;
}
errorHandler.prototype. displayErrors = function(){
//add the empty error trace to your message
this.errorMessage += ' stack trace: '+ this. errorInstance.stack;
throw new Error(this.errorMessage);
}
try{
if(condition){
//whatever...
}else{
throw new errorHandler('Some Error Message', new Error());
}
}catch(e){
e.displayErrors();
}
이제 사용자 지정 예외를 발생시킨 실제 파일과 줄 번호를 얻을 수 있습니다.