C# HttpRequest.GetResponse中未引发异常
下面是从Internet URI源获取Http Web响应的C#代码片段。 当客户端无法获得响应时,它将引发异常。C# HttpRequest.GetResponse中未引发异常,c#,C#,下面是从Internet URI源获取Http Web响应的C#代码片段。 当客户端无法获得响应时,它将引发异常。 我很想知道是否有任何情况没有例外 抛出,但HttpStatusCode不正常(即不在200-299范围内) 基本上,我需要知道什么是不抛出异常的错误状态代码 try{ HttpWebResponse response = (HttpWebResponse)request.GetResponse (); catch{} 4xx范围内的任何状态代码都被定义为客户端错误,并将导致协议异
我很想知道是否有任何情况没有例外 抛出,但HttpStatusCode不正常(即不在200-299范围内) 基本上,我需要知道什么是不抛出异常的错误状态代码
try{
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
catch{}
4xx
范围内的任何状态代码都被定义为客户端错误,并将导致协议异常。(400个错误请求、401个未授权请求等)
5xx
范围内的任何结果都被定义为服务器错误,并将导致通信异常
。(500内部服务器错误、502坏网关等)
例如,如果您想要实现重试机制,这非常有用。如果异常是通信异常
,则重试是有意义的,因为这可能是暂时性错误(连接失败、DNS解析失败),但如果异常是协议异常
,则重试是多余的,因为它应该总是失败
是否将任何其他状态代码视为错误情况取决于客户端和服务器之间的契约,但以上是HTTP标准定义的
在4xx
范围内的任何状态代码都被定义为客户端错误,并将导致协议异常。(400个错误请求、401个未授权请求等)
5xx
范围内的任何结果都被定义为服务器错误,并将导致通信异常
。(500内部服务器错误、502坏网关等)
例如,如果您想要实现重试机制,这非常有用。如果异常是通信异常
,则重试是有意义的,因为这可能是暂时性错误(连接失败、DNS解析失败),但如果异常是协议异常
,则重试是多余的,因为它应该总是失败
是否将任何其他状态代码视为错误情况取决于客户端和服务器之间的契约,但以上是HTTP标准定义的
不完全确定您要问什么,但这永远不会抛出异常,因为您正在捕获它,并且对它不做任何操作(实际上忽略了所有异常)。GetResponse行之后也缺少一个右括号。您可以看到一个状态代码列表,但并不确切地知道您在问什么,但当您捕获异常并对其不做任何操作时,它永远不会抛出异常(实际上忽略所有异常)。GetResponse行之后也缺少一个右括号。您可以在3xx处看到状态代码列表,这些代码是重定向,是有效的非错误响应(不会引发异常)。如果AllowAutoRedirect
设置为true,则这将是透明的,并且您的请求将被转发到重定向位置。如果设置为false,则可以决定如何处理来自服务器的重定向响应。如果在您的场景中,重定向不是预期的结果,并且被认为是错误,那么您可以通过这种方式处理它,尽管通常情况并非如此。3xx是重定向并且是有效的非错误响应(不会引发异常)。如果AllowAutoRedirect
设置为true,则这将是透明的,并且您的请求将被转发到重定向位置。如果设置为false,则可以决定如何处理来自服务器的重定向响应。如果在您的场景中,重定向不是预期的结果,并且被认为是错误,那么您可以通过这种方式处理它,尽管通常情况并非如此