我有以下代码:
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,实际上是任何东西。
约翰·桑德斯(John Saunders)的回答是最完整的。我认为人们只是出于恶意拒绝了他。
—
Aaronaught
不要使用
—
krbnr 2014年
throw ex
,您将使用空的调用堆栈生成一个新的异常。只需使用throw
。
我一直觉得这很令人沮丧。如果收到格式正确的响应,则不应引发异常,并且协议错误消息肯定格式正确。该类应允许用户解释结果并采取相应的措施。
—
杰里米·霍洛瓦奇
在较新的HTTP客户端中,不再为诸如404之类的东西引发@JeremyHolovacs异常。“不要在控制流中使用例外”似乎并没有幸免于建立的团队
—
Matt Kocaj
WebRequest
System.Exception
,也不要依赖处理程序中的异常文本!