我知道我只能將結果從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的頭腦仍然非常關注枚舉。 –