2017-12-29 16 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

은 당신의 코드에 따르면, 난 당신이 푸른 서비스 버스 .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