.NET에서 예외를 catch 할 때 필요한만큼 많은 유형별 예외 블록을 가질 수 있습니다. 하지만 일반적으로 적어도 하나의 "일반"예외 catch 블록을 사용하려고합니다. 하지만 거기에 "반사"를 사용하여 일반 예외 처리기에 의해 잡힌 "실제"예외 유형을 얻는 방법이 있습니까? 예를 들어일반적인 예외를 포착 할 때 원래 예외 유형을 어떻게 판별 할 수 있습니까?
, 내가
Catch ex As System.ServiceModel.FaultException(Of InvalidUser)
ProcessModuleLoadException(Me, ex)
Catch ex As System.ServiceModel.FaultException(Of SQLExceptions)
ProcessModuleLoadException(Me, ex)
Catch ex As System.ServiceModel.FaultException(Of DataNullReference)
ProcessModuleLoadException(Me, ex)
Catch ex As System.ServiceModel.FaultException
ProcessModuleLoadException(Me, ex)
Catch ex As Exception
ProcessModuleLoadException(Me, ex)
(나는 각 예외와 같은 일을하더라도, 디버깅을 세분화 한)가있는 경우.
간단히 말해서 "ex ex System.ServiceModel.FaultException"에서 "예외"를 조사하고 예외의 기본 "실제"유형을 얻고 싶습니다. 유형 (주로 디버깅 용이므로 다른 catch 블록) 또는 문자열 (로깅 용).
그러나 캐치 블록 안에는 "ex"가 이미 부모 클래스에 캐스팅되어 있으므로 원래 예외에 대한 원래 속성과 정보가 손실 된 것 같습니다.
제안 사항?
@downvoter : 이것 (와 runrunraygun 's) 응답에 무엇이 문제가 있습니까? –