.NET 코드가 던질 수있는 선택되지 않은 예외를 처리하지 않았는지 어떻게 알 수 있습니까?

StackOverflow https://stackoverflow.com/questions/2205318

문제

.NET에서 메소드 서명은 내 코드에서 던질 수있는 몇 가지 예외를 처리했는지 여부를 알려주지 않습니다. 해시 가능 제거를 사용하고 있지만 ArgumentNullexception을 처리하지 않았다면 경고 할 수있는 도구가 있습니까? 나는 런타임에 놀랐다.

그리고 이것은 코드를 잘 알아야한다는 것을 의미합니까? 그렇지 않으면 확인되지 않은 예외는 작업하기가 더 어려울 수 있습니까?

도움이 되었습니까?

해결책

실제로, 프로그램을 종료하여 예기치 않은 예외를 처리하는 것이 이러한 상황을 처리하는 가장 좋은 방법입니다. 일반적으로 프로그램 상태는 예상치 못한 일이 발생할 때 정의되지 않기 때문입니다. 모든 예외를 기록하고 적절한 수락 테스트 세트가 있으면 프로그램 흐름으로 인한 예기치 않은 예외에서 발생하는 문제를 제거 할 수 있습니다.

메소드 입력을 확인하여 방어 프로그래밍, 클래스의 단위 테스트 및 프레임 워크 이해는 대부분의 예외를 예상 할 수 있습니다.

다른 팁

Windows 응용 프로그램 :

AppDomain currentDomain = default(AppDomain);
currentDomain = AppDomain.CurrentDomain;
// Handler for unhandled exceptions.
currentDomain.UnhandledException += UnhandledExceptionHandler;
// Handler for exceptions in threads behind forms.
Application.ThreadException += ThreadExceptionHandler;

public static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
}

public static void ThreadExceptionHandler(object sender, Threading.ThreadExceptionEventArgs e)
{
}

당신이 달성하려는 것에 대한 언어 지원은 없습니다. 우리는 API의 모든 진입 지점이 로깅을위한 캐치를 시도했는지 확인하기 위해 VS에 Addin을 썼습니다. 그러나 나는 당신이 오류와 관련하여 의미있는 일을하기 위해 일부 코드를 작성해야하기 때문에 가능한 모든 선언 된 예외 사례를 다루어야하는 언어의 가치를 보지 못했습니다. 대부분의 사람들은 핸들러 작성에 대해 호소자가 불만을 제기하고 쓸모없는 코드에서 유용한 오류가 발생할 수있는 것을 숨기는 것을 살펴 봅니다. 어떤 경우에는 실패하고 문제가 있다는 것을 알기가 더 낫습니다.

응용 프로그램에 대한 최상위 레벨 예외 핸들러를 추가하고 앱에 대한 기능 및 통합 테스트를 작성하여 가능한 모든 사용 사례를 테스트합니다. 이렇게하면 거의 모든 검사되지 않은 예외를 제거하는 데 도움이됩니다.

또한 예외를 포착하지 말고 이유를 제거하십시오. (즉, 잡지 않습니다 ArgumentNullException 그러나 지나치지 마십시오 null

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top