Possible Duplicate:
VS2010 does not show unhandled exception message in a WinForms Application on a 64-bit version of WindowsVS 2012 (VB.net)는 64 비트
방금 설치 한 Windows 7에서 처리되지 않은 예외를 무시하고 VS2012를 사용하기 시작한다. 전에 VS2008 Express를 사용하고있었습니다. VS2012는 Win 7 64 비트에서 실행됩니다. (이전의 dev 환경은 XP 32 비트였습니다).
지금까지 기본 연구 프로젝트 (WinForms, VB)를 사용하여 VS에서 처리되지 않은 예외를 무시하고 있음을 알았습니다. 이 의 마지막 줄은 예외의 원인이해야
A first chance exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll
을하지만 코드는 실행에 전달 : 충분한
With cmd
.Connection = sqlConn
.CommandType = CommandType.StoredProcedure
.CommandText = "NameOfStoredProcedure"
.Parameters.Add("@TheParameterName", SqlDbType.Int, -1)
.Parameters("@TheParameterNameWithATypo").Direction = ParameterDirection.ReturnValue
물론을 직접 실행 창을 보여줍니다!
디버그/예외 대화 상자에는 모든 예외 유형에 대해 "Throw"및 "User-Unhandled"체크 상자가 있습니다. "User-Unhandled"가 모두 체크됩니다. 예외를 처리하고 예외 처리를 중단하고 싶지 않기 때문에 "Thrown"에 체크하고 싶지 않습니다. (지금 당장은 아무 것도 시도하지 않습니다 ... 블록을 모두 잡아라. - 그러나 디버거는 마치 전체 프로젝트가 하나에 들어있는 것처럼 행동합니다.)
모든 옵션 등을 살펴 봤지만 "예외시 예외 설정"옵션을 찾을 수는 없습니다. 그것은 내 코드가 아니기 때문에 내가 도움을 찾고있다. 필자가 필연적으로 내릴 수있는 어리석은 실수를 탐지하기 위해 디버거를 믿을 수 없다.
다른 사람이이 문제에 부딪 쳤던 또 다른 question을 발견했습니다. 문제는 Win64에서 발생하는 것으로 보입니다. 하지만 VS는 Win64에서 실제로 사용할 수 없습니까? 나는 꽤 믿을 수는 없지만 처리되지 않은 예외를 깨지 않으면 효과적으로 사용할 수 없게됩니다.
편집 : 모든 의견을 제공해 주셔서 감사합니다. 나는 Neolisk의 솔루션을 시도했지만 두 핸들러의 서명이 다르기 때문에 약간 코드를 변경했다 :
Public Sub Main()
AddHandler Application.ThreadException, AddressOf ThreadExceptionHandler
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler
Form1.Show()
End Sub
Friend Sub ThreadExceptionHandler(sender As Object, e As System.Threading.ThreadExceptionEventArgs)
End Sub
Friend Sub UnhandledExceptionhandler(sender As Object, E As System.UnhandledExceptionEventArgs)
End Sub
이 근무 - 감사합니다! 하지만 응용 프로그램 프레임 워크를 사용하지 않도록 설정해야합니다. 그렇지 않으면 응용 프로그램이 Sub Main을 시작으로 사용할 수 없습니다. 그리고 TBH 나는 .NET 초보자가 너무 많아 그 효과/장점/단점이 무엇인지 확실히 알지 못합니다. 내가 제공 한 모든 링크를 읽고 무슨 일이 벌어 지지만 피할 수 있으면 참여하고 싶지 않습니다 ...
KB976038에 핫픽스를 적용하면 저에게 효과적입니다. . 디버그 모드에서 예외를 발생시키고 Form_Load 이벤트를 실행하는 코드가 예상대로 실행됩니다. 이것은 응용 프로그램 프레임 워크를 사용할 수 있고 Form1을 시작 개체로 사용하며 위 코드는 주석 처리되어 있습니다.
EDIT2 : 아니요, 해당 핫픽스가 작동하지 않습니다. 원래의 "잘못된 매개 변수 이름"행으로 인해 코드가 예외로 중지되었습니다. 그러나 바로이 오류 상자를 야기 DBNull-> INT32 변환을 제외하고 후속 라인 (없이 디버깅 가능성) : 정말 모든 의견을 주셔서 감사합니다
vshost.exe - Application Error INTERNAL ERROR: Unhandled exception in Debugger::HandleIPCEvent. Event ID=0x246 Exception code=0x0000005, Eip=0x70d58101. Process ID=0xbec (3052), Thread ID=0xb1c (2844).
는 -하지만 내 마음이는 계약 위반은 다음과 같습니다 방법 개발자가 예외를 디버깅 할 수 있다고 믿을 수없는 경우 VS를 사용할 수 있습니까?Sub Main으로 시작해서 뭔가를 개발할 때마다 다음과 같은 특별한 라인을 넣는 것을 기억하지 않아야합니다. Form_Load에서 코드를 사용할 수 없다는 것을 기억하십니까? Win7 64 비트를 개발 OS로 사용하지 말 것을 권장합니다.
Win7 64bit에서 VS 2012를 사용합니다. 제 예외는 정상적으로 작동합니다. 그러나 대상으로하는 .Net 프레임 워크의 버전을 변경해보십시오. 최신 버전을 사용해보십시오. 디버거가 다른 프레임 워크를 디버깅 한 다음 프로젝트가 실행중인 경우이 문제가 발생할 수있는 인스턴스에 대해 읽었습니다. – Kratz
@HansPassant : 동일한 원인, 다른 시작 조건. OP가 VS 2012를 사용 중입니다. – Neolisk
맞아요, VS2012에서 수정되지 않았습니다. VS2021에서도 수정되지 않습니다. 바라건대 우리는 그때까지는 더 이상 걱정할 필요가 없기를 바랍니다. –