据我所知,try
和finally
块是用来执行一段代码,可能会引发一些exception
,我们还添加catch
块,如果我们准备处理一些异常类型和/或被除外它们,就像FileIOException
, AccessRight
什么的。但是,当我跑了一个例外,这个..CLR中的错误? CLR执行引擎失败
private void button1_Click(object sender, EventArgs e)
{
try
{
Environment.FailFast("It failed");
}
finally
{
MessageBox.Show("Done");
}
}
其休息,并表示检测
FatalExecutionEngineError
消息:运行时遇到一个致命错误。错误的地址是0x032526f4,位于线程0xd04。错误代码是0x80131623。此错误可能是CLR中的错误,也可能是用户代码中不安全或不可验证的部分。此错误的常见来源包括COM-interop或PInvoke的用户编组错误,这可能会破坏堆栈。
现在msdn说
通常,当一个未处理的异常终止应用程序,finally块运行是否 并不重要。但是,如果在即使在这种情况下必须运行的finally块中有 语句, 解决方法之一就是将try块添加到try-finally语句中。
所以,我添加了catch
块,但它仍然说了同样的事情。
private void button1_Click(object sender, EventArgs e)
{
try
{
Environment.FailFast("It failed");
}
catch (Exception ex)
{
}
finally
{
MessageBox.Show("Done");
}
}
它再次失败,同样的错误。至于CLR说最后的代码块总是运行的(至少在添加catch的时候),肯定不是这种情况。评论/意见任何人?
而且这里的快照..