我的应用程序中有一些代码使用了HTTP.WebSockets
客户端,并在接收循环中出错。我有一个try catch,它在caught error时调用exit()
。但我注意到,虽然客户端确实命中了该分支并停止运行整个程序,但其他线程并没有退出,因为它没有将控制权返回给终端。exit()
是否被WebSocket代码捕获?
还是有其他东西在从不同的线程调用exit()
?
更新:
经过再三考虑,我认为我应该将异常重新抛出到根级别。退出没有完全退出任务或程序仍然没有意义,但希望这能起作用。
1条答案
按热度按时间2izufjch1#
将错误重抛到顶部确实有效。如果不希望程序退出,可以创建一个原子标志变量,如
用
all_ok[]
检查,当你捕获一个错误时,你会在catch例程中用all_ok[] = false
标记这个错误。然后,每个工作线程需要定期检查all_ok[]标志,并在它为false时退出。