async函数永远不会抛出?

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)

所以:

  • 异步功能永远不应该抛出是一种好习惯吗?(就像我一样)

  • 现在,我正在捕捉所有错误.我应该更挑剔吗?也许组成一个错误类型,只是检查一下?如果是这样,在任何一种情况下我该怎么做?

Hec*_*rea 2

您对异步代码的假设是正确的。请参阅 Isaac Schlueter 本人关于该主题的这篇文章:

Node 中的模式是同步方法抛出错误,异步方法将错误作为第一个参数传递给回调。如果回调的第一个参数为 false(通常为 null 或未定义),那么一切都很好。

http://groups.google.com/forum/#!msg/nodejs/W9UVJCKcJ7Q/rzseRbourCUJ