2017-12-29 7 views
1

次のコードを使用して障害状態を設定しようとしています。つまり、使用可能なネットワークパスがないため、コードはサービスバスに送信できませんまったく。私はテスト時に自分のネットワークポートを無効にするため、これを知っています。AzureサービスバスのSendAsyncメソッドで例外をキャッチする問題

私はまだコードの非同期性に問題があります。コンソールアプリケーションでは、私が生成すべきであることを知っている例外をログアウトする何かを添付する方法があるように私は知らない。

例外テキストはどのように表示されますか?

 public async Task TestQueueExists() 
    {  
     _queueClient = new QueueClient(AppSettings.McasServiceBusConnectionString, 
      AppSettings.ListServSyncQueueName); 
     Logger.Information(
      $"Queue Created to: {_queueClient.QueueName} with RecieveMode: {_queueClient.ReceiveMode}"); 
     try 
     { 
      await _queueClient.SendAsync(new Message("Test".ToUtf8Bytes()));  
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
      throw; 
     } 

    } 
+0

AppDomain.CurrentDomainを私のテストごとに、次のように例外をキャプチャするために、次のコードを活用することができます。 UnhandledExceptionとログファイルに書き込み – Steve

+0

さて、あなたは精巧にできますか?私は冒険を受けるそのスタイルには慣れていない。 –

+0

待っているコードの周りのtry-catchはちょうどうまく動くはずです – Mikhail

答えて

0

あなたのコードによると、私はあなたがAzureのサービスバス.NET標準クライアントライブラリMicrosoft.Azure.ServiceBusを使用していることを想定。

try 
{ 
    await _queueClient 
     .SendAsync(new Message(Encoding.UTF8.GetBytes("hello world"))) 
     .ContinueWith(t => 
     { 
      Console.WriteLine(t.Status + "," + t.IsFaulted + "," + t.Exception.InnerException); 
     }, TaskContinuationOptions.OnlyOnFaulted); 
    Console.WriteLine("Done"); 
} 
catch (Exception e) 
{ 
    Console.WriteLine(e); 
} 

ネットワークが中断された場合は、次のように、あなたが例外を取り込むことができる:

enter image description here

関連する問題