当前位置:  开发笔记 > 编程语言 > 正文

捕获异常并继续执行程序是最佳做法吗?

如何解决《捕获异常并继续执行程序是最佳做法吗?》经验,为你挑选了1个好方法。

我的应用程序连接到rabbitMQ.有时候,它会抛出一个AMQPTimeoutException.更具体地说" 发送数据时出错.套接字连接超时 ".

我的解决方案

我正在捕获AMQPTimeoutException并调用我的重新连接方法.之后程序继续正常执行.此外,我设置了一个标志,以便异常最多处理3次.

try
{
    sendMethod($message);
} catch (AMQPTimeoutException $e) {
      echo "caught socket connection exception". "\n";
      $this->reconnect($message, $exchangeName, $queue);
  }
//reconnect internally checks the flag

我的问题:这是最佳做法吗?如果不是其他可能的解决方案?

注意:该应用程序是用PHP编写的.



1> geggleto..:

是.

应始终捕获和处理例外情况.这绝对是最好的做法.例外是一种语言中的控制流结构,允许程序员处理他们不期望发生或很少发生的事情.

在您的场景中,在套接字方面捕获异常是完全合理的.TCP/IP通信并不完美,并且根据各种条件,在某些时间点插座故障是100%确定的.

我建议你开始记录为什么这些套接字超时发生.通常它们是由资源耗尽引起的,但它在哪里?服务器A或服务器B ......或该客户端......

超时是需要调查的问题的症状.当您正确处理它们时,我强烈建议添加一些日志记录以找出它们发生的原因.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有