Кажется, я немного опоздал :), но обсуждение довольно интересное, так что ... вот оно ... Предполагая, что вы хотите создать обработчик ошибок, и вы используете свой собственный класс обработчика исключений, например:
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 вашему обработчику ошибок, и эта ссылка будет содержать всю необходимую информацию (например, в firefox вы можете получить имя файла, номер строки и т. Д. ; в chrome вы получите нечто подобное, если прочитаете свойство 'stack' экземпляра Error). Короче говоря, вы можете сделать что-то вроде этого:
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();
}
Теперь вы можете получить фактический файл и номер строки, в которой возникло пользовательское исключение.