C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
catch/finally ブロック内での await
該当のドキュメントが見つかりませんでした。
catch および finally ブロックで await による非同期処理ができる。
static void Main(string[] args) { MethodAsync().Wait(); // 非同期メソッドでの取得 } static async Task<string> MethodAsync() { var client = new System.Net.Http.HttpClient(); var html = await client.GetStringAsync("http://rksoftware.hatenablog.com/about"); try { html = html.Substring(0, int.MaxValue); } catch(ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); // catch の中で await できる html = await client.GetStringAsync("http://rksoftware.hatenablog.com/about"); html = new string(html.Take(100).ToArray()); } Console.WriteLine(html); return html; }