2011-04-19 1 views
1

나는 다음과 같이 try-catch 블록을 가지고 :왜 Real Studio는 예외 캐치를 중단합니까?

Try 
    Listbox1.RemoveRow(Listbox1.ListIndex) 
Catch err As OutOfBoundsException 
    MsgBox("Derp") 
End Try 

내가 디버거에서 내 프로젝트를 실행할 때 나는 잡으려고 된 정확한 라인에 OutOfBoundsException를 얻을! 왜이 기능이 작동하지 않습니까?!?

답변

2

디버거가 그 줄에서 깨지고 예외를 표시하는 것처럼 보입니다. 그러나 이력서를 클릭하면 계속 진행되고 예외를 catch 한 다음 메시지를 표시합니다.

어쩌면이 릴리스로 디버거의 동작을 변경했을 수 있습니다.

업데이트 : 당신은> 프로젝트에 가서 어떤 다른 코드가 실행됩니다 전에 즉시 예외가 발생으로 중단됩니다이

2

디버거를 변경하는 예외에 휴식 할 수 있습니다. 여기에는 Try ... Catch 블록과 같은 예외 처리 코드가 포함됩니다.

예외가 많이 발생하고 디버깅 할 때마다 단계별로 수행하지 않아도되는 코드가있는 경우 핵과 외과의 두 가지 옵션이 있습니다.

원자력 옵션은 예외를 전혀 중단하지 말 것을 알리는 것입니다.이 옵션은 예외가 아닌 작은 부분이 아닌 전체 프로젝트에 적용 할 때의 불행한 부작용을 가지고 있습니다.

수술 옵션을 끄고에 귀찮은 코드 주위 예외에 침입 전환 pragma directives을 사용하는 것입니다

#Pragma BreakOnExceptions Off 
try 
    Listbox1.RemoveRow Listbox1.ListIndex 
catch err As OutOfBoundsException 
    MsgBox "Derp" 
End 
#Pragma BreakOnExceptions On 

이것은 단순히 모두 디버거의 일부를 해제 훨씬 더 바람직하다. 참고 : BreakOnExepctions 지시문은 함수가 반환되고 주변에있는 코드의 로컬 인 경우 전역 설정 (켜기 또는 끄기)으로 되돌립니다.