Mer*_*erc 5 error-handling asynchronous node.js
我写了一个包含许多异步函数的库.如果其中一个参数是明确错误,则SYNCHRONOUS辅助函数会抛出错误:
proto.makeParameters= function( filters ){
default:
throw( new Error("Field type unknown: " + fieldObject.type ) );
break;
}
Run Code Online (Sandbox Code Playgroud)
在我的异步函数中,当我使用它时,我有:
proto.someAsyncFunction = function( cb ){
// Run the query
try {
var parameters = this.makeParameters( filters );
} catch( e ){
return cb( e );
}
}
Run Code Online (Sandbox Code Playgroud)
所以:
异步功能永远不应该抛出是一种好习惯吗?(就像我一样)
现在,我正在捕捉所有错误.我应该更挑剔吗?也许组成一个错误类型,只是检查一下?如果是这样,在任何一种情况下我该怎么做?
您对异步代码的假设是正确的。请参阅 Isaac Schlueter 本人关于该主题的这篇文章:
Node 中的模式是同步方法抛出错误,异步方法将错误作为第一个参数传递给回调。如果回调的第一个参数为 false(通常为 null 或未定义),那么一切都很好。
http://groups.google.com/forum/#!msg/nodejs/W9UVJCKcJ7Q/rzseRbourCUJ