异常是否结束线程,尽管它是try/catch

本文关键字:try catch 是否 结束 线程 异常 | 更新日期: 2023-09-27 18:01:53

我有两个问题:

如果我有这样一个方法:

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

…我把它命名为async,像这样:

public void DoMyWorkAsync()
{
   try
   {
      new Thread(DoMyWork).Start();
   }
   catch (MyException)
   {
      // Do anything
   }
}

首先,像这样的try块会捕获异常吗?如果是这样,线程会结束吗,因为通常有一个异常线程会停止,但是如果我捕获它,它也会结束吗,或者我必须实现CancellationToken吗?

异常是否结束线程,尽管它是try/catch

不,它不会。线程中的异常必须在线程中处理。主线程不控制线程的执行流程,因此不能捕获异常。

2)应用程序将终止。更多链接:http://msdn.microsoft.com/en-us/library/ms228965(v=vs.110).aspx

首先,异常会被try-block捕获吗这个吗?

不,它不会被抓住。

您需要将DoMyWork方法中的代码与try/catch封装以捕获该异常。

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