我知道我只能将结果从GetHttpCode()改为HttpStatusCode,但我不喜欢使用类型枚举。尤其是因为MSDN文档没有明确说明枚举的值始终是完全相应的http状态代码。为什么HttpException.GetHttpCode()返回一个int而不是System.Net.HttpStatusCode?
我觉得GetHttpCode()应该只是返回HttpStatusCode。
我应该停止抱怨和类型转换吗?
catch(HttpException ex)
{
switch((HttpStatusCode)ex.GetHttpCode())
{
case HttpStatusCode.NotFound:
// Do stuff...
break;
// More cases...
}
}
编辑:注意,HttpWebResponse.StatusCode的类型为HttpStatusCode
嗯,我想知道为什么'HttpStatusCode'是一个枚举,然后不只是一个静态类与恒定的整数。这里一个人定义他自己能够支持自定义值(webdav?):http://devio.wordpress.com/2007/11/14/http-status-codes-in-c/。 'HttpWebResponse.StatusCode' *是* HttpStatusCode类型的*。我认为它可能包含未定义的枚举值是令人困惑的。 –
枚举在大多数情况下很有用:在.NET框架和Http的*标准*行为的边界内,有一个Enum类型可以使用。该枚举(根据MSDN)“包含HTTP 1.1中RFC 2616中定义的状态代码的值。”我想,想要返回一个自定义*错误*值比自定义*成功*值更有可能,这就是为什么只有自定义异常类型包含整数字段的原因。尽管如此,这似乎是一个奇怪的,有点不一致的选择! –
我想我对Java的头脑仍然非常关注枚举。 –