C#에서 네이티브 예외 회피가 발생할 수 있나요?
C#에서 관리되지 않는 외부 라이브러리로 작업할 때 직면할 가능성을 고려하는 것이 중요합니다. 해당 라이브러리 내부 깊은 곳에서 발생하는 기본 예외.
Can Standard 시도해 보세요...네이티브 예외 캡처를 포착하시겠습니까?
다행히 C#에서는 네이티브 예외도 포착할 수 있는 메커니즘을 제공합니다. 문제는: 표준 try...catch 블록이 이러한 관리되지 않는 예외를 수정 없이 처리할 수 있습니까?
답변: 네이티브 예외 잡기
네이티브 예외를 catch하려면 다음을 수행할 수 있습니다. Win32Exception 클래스를 사용하십시오. 오류 코드를 검사하고 이에 따라 특정 사례를 처리할 수 있는 NativeErrorCode라는 속성을 제공합니다.
예를 들어 다음 코드 조각을 고려해보세요.
const int ERROR_FILE_NOT_FOUND = 2; const int ERROR_ACCESS_DENIED = 5; const int ERROR_NO_APP_ASSOCIATED = 1155; void OpenFile(string filePath) { Process process = new Process(); try { // Calls native application registered for the file type // This may throw a native exception process.StartInfo.FileName = filePath; process.StartInfo.Verb = "Open"; process.StartInfo.CreateNoWindow = true; process.Start(); } catch (Win32Exception e) { if (e.NativeErrorCode == ERROR_FILE_NOT_FOUND || e.NativeErrorCode == ERROR_ACCESS_DENIED || e.NativeErrorCode == ERROR_NO_APP_ASSOCIATED) { MessageBox.Show(this, e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } }
이 예에서는 다음을 시도합니다. 특정 파일 형식과 관련된 기본 응용 프로그램을 시작합니다. 애플리케이션을 시작할 수 없는 경우 관련 오류 코드와 함께 Win32Exception이 발생합니다. catch 블록 내의 if 문은 특정 오류 코드를 확인하고 적절한 메시지를 표시합니다.
위 내용은 표준 C# try...catch 블록이 관리되지 않는 라이브러리의 기본 예외를 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!