첫 번째 기회 예외
-
22-08-2019 - |
문제
'VE는 MSDN 도움말 문서를 통해 시각적 기본을 얻었습니다. 타이머를 사용하여 예제를 시도한 후 -라벨과 타이머 구성 요소를 디자이너로 드래그하고 다음을 구성 요소 서브 루틴에 추가합니다.
Label1.Text = My.Computer.Clock.LocalTime.ToLongTimeString
디버그 중 즉시 창의 출력은 다음과 같습니다.
Microsoft.visualBasic.dll에서 발생한 유형의 'System.invalidcastException'의 첫 번째 기회 예외
Microsoft.visualBasic.dll에서 발생한 유형의 'System.invalidcastException'의 첫 번째 기회 예외
컨텍스트 메뉴 구성 요소를 사용하여 이전 MSDN 예제에서 동일한 오류가 발생합니다. 내가해야합니까 Try...Catch...Finally
이 오류와 계속 진행하려고합니까? 아니면 더 심각한 것을 다루고 있습니까?
해결책
첫 번째 기회 예외에 대해 무언가를 보면 호출 한 코드 내에서 예외가 발견되었지만 반드시 코드가 실패했음을 의미하지는 않습니다. 프로그램이 충돌하지 않고 코드가 실행되고 유효한 값을 반환하는 경우 문제가 없습니다. 또한 자신의 시도/캐치 블록을 구현할 때 첫 번째 기회 예외에 대한 디버그 창에 출력이 표시됩니다.
다른 팁
디버그 메뉴 -> 예외에서는 나중에 잡히는 경우에도 예외가 발생하면 디버거가 중지 될 수 있습니다. 무슨 일이 일어나고 있는지 알고 싶다면 이것이 가장 쉬운 방법입니다.
첫 번째 기회에서 예외는 예외의 세부 사항을 조사하십시오. 스택 프레임/트레이스 속성이 표시됩니다. 거기에서 오류가 발생하는 선이 있는지 확인해야합니다. 이것은 당신에게 도움이 될 것입니다.
IDE에서 도구> 옵션> 프로젝트 및 솔루션> VB 기본값 및 'ON'을 엄격하게 설정하는 옵션을 설정하십시오. 이는 프로젝트를 실행하는 것이 아니라 프로젝트를 컴파일 할 때 캐스팅 문제를 포착하는 데 도움이 될 수 있습니다.
'첫 번째 기회 execption'이 반드시 코드에 문제가 있음을 의미하지는 않습니다. IDE 또는 컴파일러 또는 기타 관련 구성 요소가 발생하여 오류를 처리했으며 프로세스에서 디버거가 알리고 예외가 바로 즉시 창에보고됩니다. 이것은 주제에 대한 훌륭한 게시물입니다.
http://blogs.msdn.com/davidklinems/archive/2005/07/12/438061.aspx
Debug 및 Diag of First Chance 예외를위한 빠르고 쉬운 솔루션은 다음과 같습니다.
AppDomain.CurrentDomain.FirstChanceException += CurrentDomainOnFirstChanceException;
그리고
private void CurrentDomainOnFirstChanceException(object sender, FirstChanceExceptionEventArgs firstChanceExceptionEventArgs)
{
if (firstChanceExceptionEventArgs.Exception is NullReferenceException)
{
// do your handling and debugging :)
}
}
런타임 중 여러 첫 번째 기회 예외는 예외 처리가 비싸기 때문에 응용 프로그램의 성능을 무너 뜨릴 수 있습니다. 특히 웹 앱에서. 이 핸들러를 추가하고 특정 첫 번째 기회 예외를보고 피/수정하려고 시도 할 수 있습니다.