在node.js中抛出一个错误

我有一个小模块,充当我的数据模型。 它位于我的路线和我的数据库之间的特定数据(在我的情况下的用户数据)。

我在路由代码中需要这个模块,调用它的subscribe方法,并通过将所需的数据存储在我的数据库中来订阅特定的邮件列表。 好极了!

我的“订阅”方法接受一个电子邮件和一个电子邮件列表ID作为两个参数。 这是合理的,我将代码马虎,快速,并把一个id不存在的列表。 拼写错误,你的名字。

我怎样才能抛出一个错误,并指出与该不正确的编号的行号?

来自model / user.js的代码:

 if (emailLists.indexOf(listId) === -1) { throw new Error('listId does not exist'); } 

来自route.js的代码:

 user.subscribe('fake@email.com', 'knewsletterr', function (error, success) { if (error) { return sendResponse(500, 'Ahhhhhhh!'); } if (!error) { return sendResponse(200, 'subscribed'); } }); 

现在,我得到:

 /home/.../project/models/user.js:85 if (emailLists.indexOf(listId) === -1) { throw new Error('listId does not exist'); } ^ Error: listId does not exist 

如果使用节点式callback,则约定不是throw ,而是将错误作为第一个parameter passing给callback

 // divide with callback function div (x, y, done) { if (y === 0) return done (Error ('Cannot divide by zero')) else return done (null, x / y) } div (6, 3, function (err, result) { // *always* check for err if (err) console.log ('error', err.message, err.stack) else console.log ('result', result) }) 

这将帮助你!

 var el = document.getElementById('el'); var log = function( val ){ el.innerHTML+= '<div><pre>' + val + '</pre></div>'; }; try { throw Error('error in code'); } catch (e) { log( e.message ); log( e.fileName ); log( e.lineNumber ); log( e.stack ); }; 
 <div id='el'></div>