错误与Meteor.Error

时间:2015-01-15 05:37:41

标签: error-handling meteor

throw new Error和使用Meteor.Error()之间有什么区别?是仅仅在服务器上显示throw new Error不会显示给客户端(客户端将获得500内部服务器错误);并且Meteor.Error将被发送给客户。

还有其他差异吗?例如。是否会突破Fibers,停止下游代码?

1 个答案:

答案 0 :(得分:0)

Meteor.Error的主要内容就像你提到的那样

  • 完整堆栈跟踪(可能不会始终由Error给出)
  • 可以将错误发送给客户,并以有限的非透露形式发送。
  • 在某些情况下隐藏服务器中的错误(如果它在方法或发布方法中抛出,并从Accounts.onLoginAttempt等钩子中隐藏)
  • 其中的对象是EJSON序列化的,因此可以将各种数据发送到客户端
  • 当抛出Meteor.Error时,由于EJSON序列化,您可以在服务器端获得更多信息。
  • Meteor更好地显示错误。 通常,您可以[Object object]作为从普通错误中显示的原因,Meteor.wrapAsync

除此之外,Meteor.ErrorError的一个子类,并且有上述变化。

所以他们都会停止下游代码。说到光纤,如果普通的光纤以任何方式被抛出光纤,它可能会阻止你的应用(在服务器端而不是methodstartup,{{1 },Meteor.setInterval等)

它的定义也很小:https://github.com/meteor/meteor/blob/devel/packages/meteor/errors.js