我有两个问题:
如果我有这样的方法:
public void DoMyWork()
{
throw new MyException(anyString);
}
...我称之为async
:
public void DoMyWorkAsync()
{
try
{
new Thread(DoMyWork).Start();
}
catch (MyException)
{
// Do anything
}
}
首先,异常是否会被这样的try-block捕获?如果是这样,线程是否会结束,因为通常情况下线程会停止,但如果我抓住它,它也会结束,或者我是否必须实现CancellationToken
呢?
答案 0 :(得分:2)
1)不,它不会。必须在线程中处理线程中的异常。主线程不控制线程的执行流程,因此不会捕获异常。
2)申请将终止。更多信息:http://msdn.microsoft.com/en-us/library/ms228965(v=vs.110).aspx
答案 1 :(得分:1)
首先,异常是否会像try-block一样被捕获 此?
不,它不会被抓住。
您需要使用DoMyWork
将代码包含在try/catch
方法中以捕获该异常。
注意:它将导致"未处理的异常",任何未处理的异常都将拆除该进程(应用程序崩溃)。