2012-08-12 3 views
0

VB 2010 Express를 사용하고 있으며 일부 오류 알림없이 내 코드가 무시되는 경우가 있습니다. 예를 들어, I는 me.Load 처리 서브 끝에 코드를 가지고예외 알림은 없지만 다음 코드는 실행되지 않습니다.

enter image description here

카운터 = 카운터는 테스트 라인이다.

Dim mPlayer As MyMediaPlayer.MyWinPlayer 
mPlayer = New MyMediaPlayer.MyWinPlayer() 

파일 이름이 유효한 MIDI 파일을 포함, 그것은의 모든 작품과 MSGBOX 표시됩니다 MPlayer는이 같은 정의 Toub의 사운드 미디 DLL에서 개체입니다. MIDI 파일이 유효하지 않은 경우, 오류가 발생하거나 AudioLength가 NULL 또는 이상한 값이되고 싶습니다. 대신, 오류가 트리거되고 디버거가 하위를 종료합니다.

자세히 자세히 : 디버거가 첫 번째 중단 점에서 멈 춥니 다. 그런 다음 '계속'을 클릭하면 디버거가 다른 중단 점에 도달하지 않거나 MsgBox를 생성하지 않고 양식이 표시됩니다.

VB에서 오류를 줄 수있는 방법을 설명해 주시겠습니까?

+0

가능한 복제본 [VS2010은 Windows의 64 비트 버전에서 WinForms 응용 프로그램에 처리되지 않은 예외 메시지를 표시하지 않습니다.] (http://stackoverflow.com/questions/4933958/vs2010-does-not-show-unhandled- 예외 메시지 -에서 - winforms - 응용 - - -) –

+0

한스 고마워, 그 스레드를 확인해 보겠습니다!게시하기 전에 미안해! – Davide

+0

사실 그것은 같은 버그, 감사합니다 한스. 나는 두 언어 (VB 대 C#)와 IDE (나는 VS의 무료 버전을 사용하고있다)가 다르기 때문에 (예를 들어, 제안 된 해결책 중 첫 번째가 의미하는 것처럼) 질문이 중복이라는 것은 확실하지 않다. 내가 연결 한 스레드는 나를 위해 가능하지 않습니다.) 명시 적 try try 문을 작성하여 해결했습니다. 다시 한 번 감사드립니다! – Davide

답변

0

사용중인 라이브러리에 익숙하지 않지만 잘못된 파일로 인해 예외가 발생하는 경우 MyWinPlayer.Open() 메소드 (vb-speak의 기능)에서 발생합니다. 따라서 예외가 발생하면 try-catch 내부에서 해당 예외를 처리해야합니다. 현재 하위가 예외를 처리하지 않으면 예외는 을 호출하는 메소드에을 버블 링하고 예외가 처리 될 위치가 될 때까지 계속 진행합니다.

시도-catch 블록이 같은 것 (I 더 이상 vb.net에서 많이 쓰지 않는다, 구문은 완벽하지 않을 수 있습니다) : 나는에 무엇을 쓸에도 불구하고

Try 

    mPlayer.Open(filename); 

Catch ex As Exception 

    'Do something with the exception 
    ' (e.g. write a log, set a value, or display error message) 

End Try 

위의 코드 블록을 사용하여 일반 Exception을 catch하지 말고 Open() 메서드에서 throw 될 수있는 특정 유형의 예외에 중점을 둡니다. 그 이유는 현재 메서드에서 처리하고 다른 예외를 버리는 방법을 알고있는 예외를 처리하기를 원하기 때문입니다. 라이브러리의 문서를보고 던져서 포함시킬 수있는 예외 유형을 확인해야합니다.

또 다른 중요한 점은 아주 좋은 이유가 없다면 빈 catch 블록을 사용하지 않아야한다는 것입니다 (지금은 생각할 수 없지만 매우 드문 용도가 있음을 확신합니다). 빈 catch은 예외를 삼키고 아무 것도하지 않습니다. 예외가 있다는 것을 사용자에게 알리지도 않습니다.

예외를 처리하지 않으면 예외가 호출 스택의 맨 위로 올라와야하고 디버거에 Unhandled Exception 메시지가 표시되고 중지되어야합니다. 그렇지 않다면 호출 스택 아래로 예외를 삼키고 있거나 possible duplicate에 언급 된 버그를 실행 중입니다. 한스 패 자매는 자신의 의견에서 언급했습니다.

MSDN에는 꽤 괜찮은 summary of exception handling이 있습니다. NET 언어. 나는 당신이 주제에 대해 더 많이 읽도록 권합니다.

+0

철저한 답변을 해주셔서 감사합니다! 당신의 친절! Microsoft의 가이드를 확실히 살펴볼 것입니다! 실제로 버그에 부딪혔습니다. -/ 다시 한번 감사드립니다! – Davide

+0

당신이 설명하고 구문이 완벽했기 때문에 나는 그것을 정확하게 풀었다! – Davide

관련 문제