2011-11-11 38 views
1

我執行以下代碼:如何避免在的GetResponse()方法引發WebException

// get a picture from http://www.mysite.com/logos/logo.png 
WebRequest pictureRequest = WebRequest.Create(themeLogoUri); 
response = pictureRequest.GetResponse(); 

在網站上的標識可能存在與否,而當它不存在,則GetResponse()方法失敗投擲一個WebException (404)。在此之前,這一切都是正確的。

當我正在調試時,總是出現這種異常很煩人,因爲調試器總是停在這個異常。我知道我可以忽略調試器中的某種異常,但我更喜歡避免拋出異常,所以我的問題是。

如何檢查請求是否正確(圖像確實存在),如果不存在,則返回並在其他情況下繼續使用GetResponse()

在此先感謝。

回答

1

創建一個try/catch語句的簡單函數並調用它,而不是

+0

如果你閱讀答案,我說我想檢查webRequest是否存在,我想避免例外,所以這個答案是無效的。請刪除它。 –

+0

@DanielPeñalba,爲什麼不簡單地創建一個方法(或擴展方法),它完全符合:'DoesTargetExist'。它只需要包含一個try/catch,在'catch'裏面你返回false,在'try'結尾返回true。爲了防止下載整個圖片,使用'WebClient','OpenStream'和'Read'。 – Abel

1

你需要它只是用於調試目的? 然後,確實在調試器設置中將其忽略。

如果沒有,並且如果您可以更改您的服務器行爲,那麼您可能會在那裏編寫一個Web服務,它將返回您在服務器上存在文件存在的指示。

HttpWebRequest.GetResponse()無論如何都會拋出異常。 如果您不喜歡這種行爲,請不要使用HttpWebRequest類。

+0

我需要檢查webrespose是否存在。 –

+0

如果您使用Reflector或dotPeek查看HttpWebRequest的代碼,您將看到有意拋出異常。所以可能你想重新實現相同的代碼,或者使用其他類來發送請求。 –

相關問題