【问题标题】:WebResponse Try CatchWebResponse 尝试 Catch
【发布时间】:2013-06-19 07:44:47
【问题描述】:

我正在使用 WebRequest/WebResponse 来获取一些远程 html。当我的代码从远程服务器遇到错误时,会引发异常。

这是我的代码示例:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1";

WebResponse response = request.GetResponse();
string html = response.ToString();

在“WebResponse response = request.GetResponse();”上抛出异常

如果我尝试将其包装在 try 块中,则下面的“响应”会带有下划线,并显示名称“响应”在当前上下文中不存在。这是一个例子:

try
{
    WebResponse response = request.GetResponse();
}
catch
{

}

string html = response.ToString();

如何测试“响应”,同时能够在下面使用它?

【问题讨论】:

    标签: c#


    【解决方案1】:
    WebResponse response = null;
    try
    {
        response = request.GetResponse();
    }
    catch
    {
    
    }
    
    string html = response.ToString();
    

    您收到编译时错误,因为您的变量是在 try..catch 范围内声明的,而局部变量只能在其范围内访问。范围本质上由左括号和右括号表示,括号之间的所有内容都是范围的一部分。

    具体来说,当您调用request.GetResponse(); 时会抛出您收到的异常。

    这意味着您可以安全地将变量带出try..catch 范围并在方法范围内访问它,并且仍然可以捕获由于调用request.GetResponse(); 而可能引发的任何异常

    【讨论】:

    • 我也试过了。然后我得到“使用未分配的局部变量'response'”。
    • @muncherelli 我更新了我的答案。将局部变量初始化为null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2013-11-10
    • 1970-01-01
    • 2010-11-23
    • 2012-02-26
    • 2012-07-05
    相关资源
    最近更新 更多