DotNETWeekly-io / DotNetWeekly

DotNet weekly newsletter
MIT License
198 stars 3 forks source link

【文章推荐】异常中的 HResult #677

Closed gaufung closed 2 weeks ago

gaufung commented 3 weeks ago

https://blog.elmah.io/understanding-the-exception-hresult-property-in-c/

gaufung commented 3 weeks ago

image

在 C# 异常处理中,通常我们只会关心 Message, Stack Trace 等等内容,那么 HResult 这段字段代表什么意思呢? 首先 HResultHandle to result 的简写,它是标准的在不同组件之间交流的错误信息的方式,它是一个 32 位的整型数据,包含了三个内容

try
{
    int a = 1;
    int b = 0;
    int c = a / b;
}
catch (System.Exception e)
{
    var isFailure = (e.HResult & 0x80000000) != 0; // isFailure is true
    var facility = (e.HResult & 0x7FFF0000) >> 16; // facility is 2
    var code = (e.HResult & 0xFFFF); // code is 18
    System.Console.WriteLine($"isFailure: {isFailure}, facility: {facility}, code: {code}");
}

你也可以去 www.hresult.info 这个网站查询详细信息