我已经完成了这段代码
try {
//为无效网站创建网络请求。使用无效名称替换“创建”调用中的“无效站点”。
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("invalid site");
//获取上述请求的相关响应。
HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
myHttpWebResponse.Close();
}
catch(WebException e) {
Console.WriteLine("This program is expected to throw WebException on successful run."+"\n\nException Message :" + e.Message);
if(e.Status == WebExceptionStatus.ProtocolError) {
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
}
}
catch(Exception e) {
Console.WriteLine(e.Message);
}
答案 0 :(得分:1)
根据您的问题和评论,我假设您正在寻找类似的内容:
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://httpstat.us/500");
using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse())
{
myHttpWebResponse.Close();
int code = (int)myHttpWebResponse.StatusCode;
if (code == 200)
{
Console.WriteLine("success");
}
else
{
Console.WriteLine("success with code {0}", code);
}
}
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.ProtocolError)
{
// protocol errors find the statuscode in the Response
// the enum statuscode can be cast to an int.
int code = (int) ((HttpWebResponse)e.Response).StatusCode;
throw new Exception(string.Format("Status code {0} ", code));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
您可以捕获异常,检查或转换它提供的值并抛出新的异常。
您没有提供很多上下文,但让我警告您,抛出异常来处理常见的业务逻辑并不是最佳做法。您最好重构一个返回状态代码的设计,以便代码的调用者可以使用它而不必实现try / catch。 Read this msdn document获取更多指导,以及Eric Lippert中有关该主题的博客。