我一直在寻找关于此的一些明确的文件,但找不到任何好运。
在执行类似POST的操作后,哪些HTTP响应状态代码会HttpWebRequest.GetResponse()
生成WebException
?
具体而言,它会为状态WebException
以外的任何内容生成200 OK
吗?或者它只会产生WebException
,例如400,404和500(为了争论)?
我想知道,因为我正在与之通信的服务器定义除HTTP 200 OK
以外的任何内容作为错误条件返回。我可以依赖为{200}以外的其他任何内容生成WebException
吗?
我目前编写代码以检查每次返回状态代码并确保其为200 OK
。如果不是,它将采取适当的行动 - 但是该代码与我希望清理的WebException
的catch块之间存在大量重复。
非常感谢任何与文档相关的链接。
答案 0 :(得分:2)
结束回复之后做了明确的检查&捕获和检查WebExceptions;导致一些重复的代码,但如果状态不是200,那么WebException是否总是会发生没有明确的答案。
答案 1 :(得分:1)
我认为它会,但这听起来像是一个冒险的假设。首先,MSDN docs明确指出GetResponse
将抛出除WebException
之外的异常。但是,我可以从经验中明确地说,“304 Not-Modified”响应将被抛出WebException
。
所有这些谈话都散发出一股狡猾的代码气味;不要使用异常来控制执行流程。您最好适当地处理异常,然后明确检查StatusCode
属性是否允许值。
答案 2 :(得分:0)
来自seperate system的WebException系统为HTTP error system。 这主要是因为浏览器或客户端返回HTTP错误,并且在构建页面时服务器会抛出WebException。当发现HTTP错误时,页面将被发送到客户端,您将无法了解它。