1

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 ブロックでラップしようとすると、下の "response" に下線が引かれ、The name 'response' does not exist in the current context. と表示されます。以下に例を示します。

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

}

string html = response.ToString();

以下で使用できる状態で「応答」をテストするにはどうすればよいですか?

4

1 に答える 1

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

}

string html = response.ToString();

try..catch変数がスコープ内で宣言されており、ローカル変数はそのスコープ内でのみアクセスできるため、コンパイル時エラーが発生しています。スコープは基本的に左括弧と右括弧で示され、括弧の間はすべてスコープの一部です。

具体的には、受け取った例外は、 を呼び出したときにスローされますrequest.GetResponse();

つまり、変数をスコープ外に安全に持ち出し、try..catchメソッド スコープでアクセスでき、呼び出しの結果としてスローされる可能性のある例外を引き続きキャッチできます。request.GetResponse();

于 2013-06-22T05:52:10.970 に答える