Joh*_*usk 9 c# multithreading exception
在C#中合法和安全地捕获一个线程上的异常,然后将其重新抛出到另一个线程上.
这是合法的
Exception localEx = null;
Thread mythread = new Thread() { () =>
{
try
{
DoSomeStuff();
}
catch(Exception ex)
{
localEx = ex;
}
});
myThread.Start();
...
myThread.Join();
if(localEx != null)
throw localEx; // rethrow on the main thread
Run Code Online (Sandbox Code Playgroud)
我认为这是合法的,但我很难找到证明它的任何doco.我发现最接近的是在线程之间传递异常的简短提及:http://msdn.microsoft.com/en-us/library/ms229005.aspx
Ben*_*n M 11
是的,这是合法的.(一般来说)例外是没有线程关联的描述性对象.
在新的异常中包装线程异常最好:
throw new Exception("Something descriptive here", localEx);
Run Code Online (Sandbox Code Playgroud)
这样,localEx中的堆栈跟踪将被保留(作为InnerException新异常).
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |