문제

빈 catch 블록이 많이 있는 프로덕션 애플리케이션을 디버깅하고 있습니다. 한숨을 쉬다:

try {*SOME CODE*}
catch{}

디버거가 IDE에서 catch에 도달할 때 예외가 무엇인지 확인할 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

VS에서 catch 블록 내부에 있는 동안 IDE의 로컬 영역을 살펴보면 방금 잡힌 예외에 대한 모든 정보를 포함하는 $EXCEPTION 효과에 대한 내용을 갖게 됩니다.

다른 팁

Visual Studio - 디버그 -> 예외 -> 발생한 열에서 "공용 언어 런타임 예외" 확인란을 선택합니다.

당신은 쓸 수 있습니다

catch (Exception ex) { }

그런 다음 여기에서 예외가 발생하고 포착되면 ex를 검사할 수 있습니다.

아니요, 해당 코드 블록에 "예외는 신경 쓰지 않습니다"라고 표시되어 있기 때문에 불가능합니다.전역 찾기를 수행하고 다음 코드로 바꿔 예외를 확인할 수 있습니다.

catch {}

다음과 함께

catch (Exception exc) {
#IF DEBUG
    object o = exc;
#ENDIF
}

이렇게 하면 현재 프로덕션 코드에 대해 아무 것도 포착하지 않는 상태로 유지되지만 DEBUG에서 실행할 때 객체 o에 중단점을 설정할 수 있습니다.

Visual Studio를 사용하는 경우 처리되지 않았는지 여부에 관계없이 예외가 발생할 때마다 중단하는 옵션이 있습니다.예외가 발생하면 예외 도우미(VS 2005 이상만 해당)가 어떤 종류의 예외인지 알려줍니다.

때리다 Ctrl 키+Alt+이자형 예외 옵션 대화 상자를 불러오고 이 기능을 켜려면

그 시점에 예외를 추가하고 검사할 수는 없나요?

@sectrean

컴파일러는 Exception ex 값을 사용하는 것이 없으면 이를 무시하기 때문에 작동하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top