在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>