비동기 I/O 및 AsyncCallbacks를 사용하여 I/O 완료를 처리하는 다중 스레드 .NET 응용 프로그램이 있습니다.비동기 I/O가 catch 할 수없는 예외를 throw 할 수 있습니까?
가 가, 캐치가 MyApp.cs에서라인 (123)은 AsyncCallback의 첫 번째 실행 라인과는 시도/캐치 (예외 예)의 내부에 불과하다
Arithmetic operation resulted in an overflow.
at MyApp.ReadComplete(IAsyncResult ar) in c:\MyApp.cs:line 123
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.ContextAwareResult.CompleteCallback(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.ContextAwareResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
: 드물게 응용 프로그램과 같은 예외와 함께 실패하지 않습니다 실행되지 않습니다.
예외가 발생한 지점에 대한 .NET Framework가 거짓말입니까? 예외를 실제로 잡을 수없는 비동기 netherworld에서 예외가 발생 했습니까? 왜 내가이 예외를 잡을 수 없습니까?
이것은 매우 오래된 질문의 변종입니다. "하나님이 잡을 수없는 예외를 제기 할 수 있습니까?" –
스택 추적에서 예외가 사용자의 메서드에서 비롯된 것으로 표시되는 경우에는 발생하지 않을 것으로 예상됩니다. 문제를 재현하는 코드를 게시 할 수 있습니까? 또한 InnerExceptions를 확인 했습니까? – driis
비동기 I/O 중에 AritmeticException (또는 다른 예외)을 유발할 수 없기 때문에 문제를 재현하는 코드를 게시 할 수 없습니다. 내가 유도 한 예외는 예상대로 포착됩니다. 내부 예외는 없습니다. –