【发布时间】:2010-12-29 07:23:39
【问题描述】:
我有以下代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "HEAD";
request.Credentials = MyCredentialCache;
try
{
request.GetResponse();
}
catch
{
}
如何捕获特定的 404 错误? WebExceptionStatus.ProtocolError 只能检测到发生了错误,而不能给出错误的确切代码。
例如:
catch (WebException ex)
{
if (ex.Status != WebExceptionStatus.ProtocolError)
{
throw ex;
}
}
只是还不够有用...协议异常可能是 401、503、403 等等。
【问题讨论】:
-
NNNOOOOOOOOOOOOOOO! 不要捕获
System.Exception,也不要依赖处理程序中的异常文本! -
约翰桑德斯的回答是最完整的。我认为人们只是出于恶意而对他投了反对票。
-
不要使用
throw ex,您将生成一个带有空调用堆栈的新异常。只需使用throw。 -
我自己一直觉得这很令人沮丧。如果您得到格式正确的响应,则不应抛出异常,并且协议错误消息绝对格式正确。该类应允许用户解释结果并采取相应的行动。
-
@JeremyHolovacs 在较新的 http 客户端中不再抛出类似 404 的异常。 “不要为控制流使用异常”似乎没能在构建
WebRequest的团队中幸存下来@
标签: c# .net exception-handling error-handling http-status-code-404