繁体   English   中英

.Net 4.0和.Net 2.0中的异常代码更改

[英]Exception Code Changes in .Net 4.0 and .Net 2.0

我正在将.Net Framework 2.0应用程序迁移到.Net Framework 4.0。

这样,我有一个程序在引发异常时获取异常代码。 但是不幸的是,.NET Framework 2.0和.Net Framework 4.0之间的异常代码有所不同。 下面是我的代码

try
{
       throw new DirectoryNotFoundException();
}
catch (Exception ex)
{
        MessageBox.Show(Marshal.GetExceptionCode().ToString());
}

上面的程序对于.Net Framework 2.0返回“ -532459699”,对于.Net Framework 4.0返回“ -532462766”

有没有办法获得与.Net Framework 2.0相同的异常代码?

这不适用于托管异常处理。 如果您看一下Marshal课程的描述,那就很清楚了:

提供了用于分配非托管内存,复制非托管内存块以及将托管类型转换为非托管类型的方法的集合,以及与非托管代码进行交互时使用的其他方法。

那为什么要得到不同的密码? 实际上,这不值得讨论,因为该异常代码不是来自托管应用程序。 重要性是正确的处理方式,如下所示:

try { }
catch (DirectoryNotFoundException ex) { }

现在您知道那是抛出的异常。

您的隐含问题“为什么这些代码不同?”的答案 “您不必关心,这是一个实现细节”

如果您的实际问题是“如何识别异常?” 请参阅如何在C#中获取异常错误代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM