【发布时间】:2012-12-28 15:03:51
【问题描述】:
node.js 中的常见做法是将错误消息作为第一个参数返回给回调函数。在纯 JS(Promise、Step、seq 等)中有许多解决这个问题的方法,但它们似乎都不能与 ICS 集成。在不损失可读性的情况下处理错误的正确解决方案是什么?
例如:
# makes code hard to read and encourage duplication
await socket.get 'image id', defer err, id
if err # ...
await Image.findById id, defer err, image
if err # ...
await check_permissions user, image, defer err, permitted
if err # ...
# will only handle the last error
await
socket.get 'image id', defer err, id
Image.findById id, defer err, image
check_permissions user, image, defer err, permitted
if err # ...
# ugly, makes code more rigid
# no way to prevent execution of commands if the first one failed
await
socket.get 'image id', defer err1, id
Image.findById id, defer err2, image
check_permissions user, image, defer err3, permitted
if err1 || err2 || err3 # ...
【问题讨论】:
标签: node.js error-handling coffeescript iced-coffeescript