1

私はSystem.Net.WebExceptionことわざを得ています:

リモート サーバーがエラーを返しました: (403) 許可されていません。

http リクエストで無効なヘッダーが渡されているため、これは私が期待していることです。ただし、私のコードは、期待どおりに例外をキャッチしていないようです。

コードは次のとおりです。

private void callback(IAsyncResult result)
{
    Debug.WriteLine("Callback");
    HttpWebResponse response = null;
    try
    {
        response = (result.AsyncState as HttpWebRequest).EndGetResponse(result) 
                       as HttpWebResponse;
    }
    catch (WebException e)
    {
        Debug.WriteLine("Exception: " + e);
    }
    catch (Exception e)
    {
        Debug.WriteLine("Unknown exception: " + e);
    }
}

例外がキャッチされないのはなぜですか?

4

1 に答える 1

0

ここを見てください。

おそらく、次のようにする必要があります。

Task<WebResponse> task = Task.Factory.FromAsync(
    request.BeginGetResponse,
    asyncResult => { callback(asyncResult); },
    (object)null);

return task.ContinueWith(t =>
{
if (t.IsFaulted)
{
    //handle error
    Exception firstException = t.Exception.InnerExceptions.First();
}
else
{
    return FinishWebRequest(t.Result);
}
});
于 2014-10-06T19:24:34.700 に答える