예외를 기록한 후 비동기 블록을 실행하는 동안 발생하는 예외를 다시 발생시켜야했습니다.F #에서 비동기 워크 플로에서 reraise를 사용하는 방법은 무엇입니까?
다음과 같이 컴파일러에서는 처리기 내에서 reraise 함수를 호출하지 않는다고 생각합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
let executeAsync context = async {
traceContext.Properties.Add("CorrelationId", context.CorrelationId)
try
do! runAsync context
return None
with
| e when isCriticalException(e) ->
logCriticalException e
reraise()
| e ->
logException e
return Some(e)
}
내부의 예외를 포장. .net 4.5에서는 'ExceptionDispatchInfo' 클래스를 사용할 수 있습니다.이 클래스는 원본 및 IL 오프셋의 어셈블리와 같은 Watson 버킷 정보를 캡처합니다. http://msdn.microsoft.com/en-us/library/system.runtime.exceptionservices.exceptiondispatchinfo(v=vs.110).aspx –
@DaxFohl은 'ExceptionDispatchInfo'를 사용하여 업데이트 된 답변을 제공해 주시겠습니까? –