c# - 尽管是try/catch,但是异常会结束线程吗?

标签 c# multithreading

我有两个问题:

如果我有这样的方法:

public void DoMyWork()
{
   throw new MyException(anyString);
}

...我这样称呼async:
public void DoMyWorkAsync()
{
   try
   {
      new Thread(DoMyWork).Start();
   }

   catch (MyException)
   {
      // Do anything
   }
}

首先,这样的try块会捕获异常吗?如果是这样,线程是否会终止,因为通常情况下线程会停止运行,但是如果我捕获了它,线程也会终止,还是我必须实现一个CancellationToken

最佳答案

First of all, will the exception be catched with a try-block like this?



不,不会被捕获。

您需要使用DoMyWork将代码包装在try/catch方法内,以捕获该异常。

注意:这将导致“未处理的异常”,任何未处理的异常都将破坏进程(应用程序崩溃)。

关于c# - 尽管是try/catch,但是异常会结束线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23500417/

相关文章:

c - 来自 atoi 的段错误

Python 线程退出代码

c# - Silverlight 处理多个按键组合

c# - 默认情况下,如何在数据库中设置 Entity Framework 导航属性查询过滤器?

c# - 如何将图标绑定(bind)到资源中定义的上下文菜单

java - ExecutorService超时而不阻塞主线程

python - Python 中的多处理 : Handle Multiple Worker Threads

c# - 将 outerXml 转换为 OpenXmlElement

c# - Automapper:检查 MapFrom 中的空值

java - Java 线程的未知行为