我正在尝试处理.NET CF程序如下所示的其他线程上发生的错误:
static void Main()
{
Thread t = new Thread(Start);
t.Start();
...
}
void Start()
{
... Exception here
}
在我的情况下,将start catch放在Start方法中是不可能的。如何在全局代码中处理它?</ p>
答案 0 :(得分:5)
如果没有进入异常处理的最佳实践,您可以使用填充方法来执行您想要的操作,例如。
static void Main()
{
Thread t = new Thread(Shim);
t.Start();
...
}
void Shim()
{
try
{
Start();
}
catch
{
//If there's something you can really do about it...
}
}
void Start()
{
... Exception here
}
<强>更新强>
如果您指的是NUnit忽略非测试线程上的异常的方式,请参阅我写的一篇博客文章,其中描述了与ReSharper测试运行器相同的问题\功能。它由legacyUnhandledExceptionPolicy控制。
http://gojisoft.com/blog/2010/05/14/resharper-test-runner-hidden-thread-exceptions/
答案 1 :(得分:4)
您可以使用AppDomain.UnhandledException,但无法从中“恢复”应用程序,您可以做的最好的事情是向用户显示消息并正常失败。