看起来这个 HttpException (0x80072746 - 远程主机关闭了连接) 可能会被抛出,例如,如果用户在我们传输文件时关闭了窗口。即使我们以较小的块发送文件并检查客户端是否仍然连接,异常仍然可能发生。我们希望能够捕捉到这个特定的异常,并忽略它。
HttpException 中提供的 ErrorCode 是一个 Int32 - 太小而无法容纳 0x80072746,那么我们在哪里可以找到这个数字呢?
看起来这个 HttpException (0x80072746 - 远程主机关闭了连接) 可能会被抛出,例如,如果用户在我们传输文件时关闭了窗口。即使我们以较小的块发送文件并检查客户端是否仍然连接,异常仍然可能发生。我们希望能够捕捉到这个特定的异常,并忽略它。
HttpException 中提供的 ErrorCode 是一个 Int32 - 太小而无法容纳 0x80072746,那么我们在哪里可以找到这个数字呢?
Int32 并不是真的太小,无法容纳 0x80072746;仅在“正常”表示法中,此数字为负数:0x80072746 == -2147014842,您可以创建一个常量来比较错误代码:
const int ErrConnReset = unchecked((int)0x80072746);
或者
const int ErrConnReset = -2147014842;
HttpException.ErrorCode 属性为您提供您正在寻找的错误代码。让它看起来像这样:
try {
//...
}
catch (HttpException ex) {
if ((uint)ex.ErrorCode != 0x80072746) throw;
}
在计算机科学中,负整数以十六进制表示,第一位设置为 1(来源:wikipediat)。
据此,十六进制数0x80072746
可以写为基数 2 :
1000 0000 0000 0111 0010 0111 0100 0110
第一位被设置......然后它实际上对应于这个数字:
-0111 1111 1111 1000 1101 1000 1011 1010
最终可以像这样以 10 为基数表示:
-2147014842
最后,实际上是一个正确的整数。
不知道能不能帮你解决问题。