비동기 void 메서드에서 예외 처리
Microsoft의 .NET Async CTP에서 비동기 메서드는 예외가 발생할 때 다르게 동작합니다. 비동기 Task 또는 비동기 Task
예외 잡기
비동기 void 메서드에서 발생한 예외를 포착하려면 명시적으로 메서드 호출을 기다리거나 Wait() 메서드를 사용해야 합니다.
메서드 호출 대기 중:
<code class="language-csharp"> public async Task Foo() { var x = await DoSomethingAsync(); } public async void DoFoo() { try { await Foo(); } catch (ProtocolException ex) { // 由于在异步方法中等待了调用,因此将捕获异常。 } }</code>
Wait() 메소드 사용:
<code class="language-csharp"> public void DoFoo() { try { Foo().Wait(); } catch (ProtocolException ex) { // 由于等待了调用的完成,因此将捕获异常。 } }</code>
의미 처리 오류
Stephen Cleary가 지적했듯이 비동기 void 메소드는 오류 처리 의미가 다릅니다.
"비동기 void 메서드가 예외를 발생시키면 비동기 void 메서드가 시작될 때 활성화된 동기화 컨텍스트에서 직접 예외가 발생합니다.
기타 안내
위 내용은 C#의 Async Void 메서드에서 예외를 어떻게 잡을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!