首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NetMQ未处理异常最佳实践

NetMQ未处理异常最佳实践
EN

Stack Overflow用户
提问于 2021-03-16 17:16:41
回答 1查看 665关注 0票数 5

我使用NetMQ作为客户机/服务器通信,用于定价系统,使用Pub/Sub作为价格数据,使用Req/Res作为C&C。它运行得很好,只是我看到NetMQ库的内部出现了随机和不可复制的异常。

我目前正在WindowsServer2008R2/20012R2上的WindowsV4.7.2堆栈上使用NetMQ v4.0.1.6。

例外情况包括:

  • NetMQ.FaultException @ NetMQ.Msg.Close()
  • System.ArgumentOutOfRangeException NetMQ.Core.Patterns.Utils.ArrayExtensions.Swap[]
  • System.IndexOutOfRangeException NetMQ.Core.Utils.YQueue`1[]/NetMQ.Core.Patterns.Utils.Trie.Check()
  • System.Net.Sockets.SocketException NetMQ.Core.Mailbox.TryRecv()/NetMQ.Core.Mailbox.Send()
  • System.NullReferenceException NetMQ.Core.Patterns.Utils.Trie.ApplyHelper()/NetMQ.Core.Patterns.Utils.Trie.Check()
  • System.ObjectDisposedException @ NetMQ.Core.SocketBase.CheckDisposed()

所有这些都发生在NetMQ.NetMQPoller.RunPoller()或NetMQ.Core.Utils.Proactor.Loop()中,我不知道如何捕获和减轻它们。

使用NetMQ加强服务/应用程序以防止此类异常破坏服务的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-03-27 04:20:15

我在一个大的组织里专业地做了这件事,并且取得了巨大的成功。

最佳实践是在循环中包含一个try catch处理程序,然后执行如下操作

(从列表中随机抽取错误类型)

代码语言:javascript
复制
/*loop*/(/*loop condition*/) {
  try {
    // processing
  } 
  catch (NetMQ.FaultException $exception) {
    // specific error handling
  } 
  catch (System.ObjectDisposedException $exception) {
    // specific error handling
  }
  catch (Exception $exception) {
    // generic error handling
  }
}

另外,您也可以传递一个特定的错误处理类/服务,以便将错误处理功能卸载到一个单独的位置(更好的可测试性)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66660127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档