1
1
我认为这里有一个更根本的问题:
如果异常确实是由第二次不会发生的事情引起的,那么重试就没有问题。但是,没有什么理由产生一个新的线程-只要让你的线程(在它的try/catch中)重试这个操作。您可以在一个简单的循环中轻松地做到这一点—一个简单的实现(不建议这样做,因为它可能永远不会结束,但它可以为您提供正确的想法)可以是:
如果没有,那么您应该尝试调试其他一些问题,很可能是多线程导致的微妙的争用情况。 |
2
0
您确实需要在所有线程入口点周围设置try/catch以防止崩溃。这包括呼叫线程。开始, ThreadPool.QueueUserWorkItem,BeginInvoke,异步回调等。也不要忘记终结器,那里的错误也会使应用程序崩溃。 就“重启”线程而言,这可能是极其危险的。对所有线程执行此操作意味着您将不知道已经发生了什么,也不知道应用程序处于什么状态,而且您可能会在第一时间合成任何导致异常的问题。它也不太可能成功,除非例外是暂时的,比如网络或基于资源的。 有针对性的重试对于可能暂时出错的特定类型的操作很有用。 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
rhymes · 如何让线程操作相同的java列表 2 年前 |