2016-08-29 8 views
0
async Task<Image> GetImageAsync(string url) 
     { 
      try 
      { 
       var request = (HttpWebRequest)WebRequest.Create(url); 
       request.Method = "GET"; 

       //On worker thread 
       var response = await request.GetResponseAsync() as HttpWebResponse; 

       //Back on calling thread 
       var responseStream = GetCompressedStream(response); 
       if (responseStream != null) 
        return Image.FromStream(responseStream); 
      } 
      catch(Exception eee) 
      { 
       string myerropr = eee.ToString(); 
      } 

      return null; 
     } 

とVARストリームで私は例外を取得していないが、ブレークポイントを使用するときに私はストリーム上で例外を参照してくださいどのように私はそれを解決することはできますか?

private static Stream GetCompressedStream(HttpWebResponse response) 
    { 
     try 
     { 
      var stream = response.GetResponseStream(); 

      if (response.ContentEncoding.ToLower().Contains("gzip")) 
       return new GZipStream(stream, CompressionMode.Decompress); 
      else if (response.ContentEncoding.ToLower().Contains("deflate")) 
       return new DeflateStream(stream, CompressionMode.Decompress); 
     } 
     catch(EndOfStreamException ee) 
     { 
      string myer = ee.ToString(); 
     } 
     return null; 
    } 

私は長さで見たブレークポイントを使用します。

長さは= 'のStream.length' タイプ の例外を投げた「System.NotSupportedException '

「位置」についても同じです。

最後に両方のメソッドがnullを返します。

ブレークポイントを使用しているときだけ例外をキャッチできませんでした。

+0

これらは内部例外であり、ランタイムを心配する必要はありません。これがまったく投げられない理由です。 'Stream'のサブクラスはさまざまな機能を提供し、それらのすべてが' Stream'基本クラスのすべてのプロパティとメソッドをサポートするわけではありません。私のアドバイスは、それらについて全く心配することではなく、例外ハンドラに投げられるエラーだけを考慮する。 –

答えて

0

NotSupportedExceptionに関するthisの記事を読むことをおすすめします。

あなたのケースでは、例外は内部的にしか起こりません(デバッグ中にしか見ることができません)ので、本当に心配する必要はありません。

関連する問題