我知道我可以将结果从GetHttpCode()强制转换为HttpStatusCode,但我不喜欢对类型进行类型转换。特别是因为MSDN文档没有明确说明枚举的值始终是完全对应的http状态代码。
我认为GetHttpCode()应该返回HttpStatusCode。
我应该停止抱怨和强制转型?
catch(HttpException ex)
{
switch((HttpStatusCode)ex.GetHttpCode())
{
case HttpStatusCode.NotFound:
// Do stuff...
break;
// More cases...
}
}
编辑:请注意,HttpWebResponse.StatusCode 类型为HttpStatusCode
答案 0 :(得分:8)
值得注意的是,HTTP允许自定义状态代码,因此无法保证枚举将包含您的响应中的值。出于这个原因,API返回int
值而不是尝试使用枚举是明智的。
答案 1 :(得分:1)
HTTP状态代码不一定来自固定列表,但通常会这样做。使用枚举是一种便利。要求枚举是错误的。
答案 2 :(得分:0)
响应包含错误代码的整数值。 int是实际的错误代码。枚举允许错误代码的“友好”表示。
答案 3 :(得分:0)
我应该停止抱怨和强制转型?
是。或者使用相应的整数值。
答案 4 :(得分:0)
是的,你应该那样做。最重要的是,由于您自己提供的代码使您无法使用任何整数值或状态编号。从技术上讲,无论enum-value是否与状态数相对应都无关紧要。