![]() |
1
28
一般来说,在新线程中抛出异常时,您不知道起始线程将在哪里——为什么它会等待线程抛出异常? 想想涉及到的堆栈——当抛出异常时,它会向上堆栈,直到到达适当的catch块。新线程与创建线程有一个完全独立的堆栈,因此它永远不会到达创建线程堆栈中的catch块。 编辑:当然,您可以设计您的系统,以便创建线程 做 等待其他事情发生-有点像Windows窗体应用程序中的消息循环。然后,新线程可以捕获异常并向创建线程发送消息,然后创建线程可以处理该异常。不过,这不是正常的设置——你必须全部明确地进行设置。 |
![]() |
2
2
做假设是个坏主意,尤其是在涉及多个线程的情况下(你知道这句老话)。 为什么? 将 启动线程的代码看到异常了吗?引发异常时,启动线程的代码甚至可能不存在。 |
![]() |
3
2
在Try/Catch语句中不会捕获正在运行的线程,因为它正在另一个线程中运行。Try/Catch仅适用于当前线程。您需要做的是在线程正在运行的函数中使用try/catch,并有一些方法来管理发生崩溃时会发生什么。 |
![]() |
4
2
您可能需要使用 EventGeneratingThread wrapper -这将允许您捕获并处理从生成线程的进程中抛出的异常。 |
![]() |
5
2
试着在你的嫁妆前加上这个
我使用的是后台工作程序,而我循环中的所有try-catch都按照您期望的那样工作。 |
|
lfox · 如果列中不存在某个值,则停止代码执行 3 年前 |
![]() |
juztcode · 在C++中尝试捕获-创建了多少个对象 7 年前 |
![]() |
Novic · 结果不明确时如何使用tryCatch 7 年前 |
![]() |
Jacob Nelson · 多次尝试表达式,直到在R中成功 7 年前 |
![]() |
Mert Yücel · 如何在布尔方法中引发三个异常? 7 年前 |
![]() |
Jatt · 捕获从setInterval内部引发的异常 7 年前 |