HttpWebRequest.GetReponse()有4种类型的异常MSDN:
- System.InvlaidOperationException
- System.Net.ProtocalViolationException
- System.NotSupportedException
- System.Net.WebException
我想捕获GetResponse()抛出的所有异常,其中一个catch {}用于所有GetResonse()异常,或者catch {}用于GetResponse()抛出的每种类型的异常,并用另一个catch {}来捕获所有其他异常。
在我读过的所有内容中,我只看到WebException被抓住了。是因为它捕获了GetResponse()抛出的所有内容,还是因为其他异常更通用而且会被其他异常抛出?
请考虑以下代码:
try
{
//a bunch of code...
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
//the rest of the try block...
}
catch (WebException e)
{
Console.WriteLine("You caught a WebException: " + e.Message);
throw;
}
catch (Exception e)
{
Console.WriteLine("This exception was not from getResponse: " + e.Message);
throw;
}
*我故意在这里扔。它需要由堆栈中的其他呼叫者处理。
或者,要捕获GetResponse抛出的所有异常,我会做这样的事情吗?
catch (WebException e)
{
Console.WriteLine("You caught a WebException: " + e.Message);
throw;
}
catch (InvalidOperationExceltion e)
{
// Do stuff...
}
catch (ProtocolViolationException e)
{
// Do stuff...
}
catch (NotSupportedException e)
{
// Do stuff...
}
catch (Exception e)
{
// Do stuff...
}
我确信它和我想的一样简单,但是我找不到人们捕获的例子而不是WebException。
谢谢!
答案 0 :(得分:0)
使用第二个代码,但为什么在处理GetResponse抛出的异常时会处理所有其他异常?额外的“捕获”是IMO不必要的。