C# 예외 Rethrow 모범 사례 가이드
C#에서 예외를 처리할 때는 명확한 스택 추적을 유지하기 위해 적절한 다시 발생 방법을 선택하는 것이 중요합니다.
방법 1: throw;
이 구문은 스택 추적을 유지하면서 현재 예외를 다시 발생시킵니다.
방법 2: throw ex;
이 메서드는 지정된 예외 개체를 다시 발생시킵니다. 그러나 원래 스택 추적을 throw 문의 현재 위치로 덮어쓰므로 예외의 원인을 정확히 찾아내기가 어렵습니다.
어떤 방법이 좋을까요?
예외를 다시 발생시킬 때는 항상 throw;
을 사용하세요. throw ex;
은 예외 소스에 대한 중요한 정보를 모호하게 하므로 코딩 오류로 간주되어야 합니다.
다른 소스의 예외 처리
다른 곳에서 발생한 예외(예: AggregateException 또는 TargetInvocationException)를 다시 발생시켜야 하는 경우 직접 다시 발생시키지 마세요. 대신 ExceptionDispatchInfo를 사용하여 필요한 정보를 보존하세요.
예:
<code class="language-csharp">try { methodInfo.Invoke(...); } catch (System.Reflection.TargetInvocationException e) { System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(e.InnerException).Throw(); throw; // 确保编译器理解该代码块不会退出 }</code>
위 내용은 스택 추적을 보존하기 위해 C#에서 예외를 어떻게 다시 발생시켜야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!