2011-11-11 13 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的代码,您将看到有意抛出异常。所以可能你想重新实现相同的代码,或者使用其他类来发送请求。 –

相关问题