3

看起来这个 HttpException (0x80072746 - 远程主机关闭了连接) 可能会被抛出,例如,如果用户在我们传输文件时关闭了窗口。即使我们以较小的块发送文件并检查客户端是否仍然连接,异常仍然可能发生。我们希望能够捕捉到这个特定的异常,并忽略它。

HttpException 中提供的 ErrorCode 是一个 Int32 - 太小而无法容纳 0x80072746,那么我们在哪里可以找到这个数字呢?

4

3 回答 3

5

Int32 并不是真的太小,无法容纳 0x80072746;仅在“正常”表示法中,此数字为负数:0x80072746 == -2147014842,您可以创建一个常量来比较错误代码:

const int ErrConnReset = unchecked((int)0x80072746);

或者

const int ErrConnReset = -2147014842;
于 2011-02-24T12:56:29.987 回答
5

HttpException.ErrorCode 属性为您提供您正在寻找的错误代码。让它看起来像这样:

        try {
            //...
        }
        catch (HttpException ex) {
            if ((uint)ex.ErrorCode != 0x80072746) throw;
        }
于 2011-02-24T13:26:25.747 回答
2

在计算机科学中,负整数以十六进制表示,第一位设置为 1(来源:wikipediat)。

据此,十六进制数0x80072746可以写为基数 2 :

1000 0000 0000 0111 0010 0111 0100 0110

第一位被设置......然后它实际上对应于这个数字:

-0111 1111 1111 1000 1101 1000 1011 1010

最终可以像这样以 10 为基数表示:

-2147014842

最后,实际上是一个正确的整数。

不知道能不能帮你解决问题。

于 2011-02-24T12:57:09.970 回答