를 잡는 방법 모든 예외를 충족을 지지 않습니다.인터넷 응용 프로그램[중복]

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

  •  01-07-2019
  •  | 
  •  

문제

가능한 중복:
.NET-는 가장 좋은 방법은 무엇일을 구현하는"모든 예외 처리기"

나는가.NET 콘솔 앱은 충돌을 표시하는 메시지를 사용합니다.내 모든 코드 try{<code>} catch(Exception e){<stuff>} 블록이지만,여전히 오류가 때때로 표시됩니다.

에 Win32 응용 프로그램,캡처할 수 있습니다 가능한 모든 예외/충돌을 설치하여 다양한 예외 처리기:

/* C++ exc handlers */
_set_se_translator
SetUnhandledExceptionFilter
_set_purecall_handler
set_terminate
set_unexpected
_set_invalid_parameter_handler

는 무엇입에 해당하는니다.NET 세계할 수 있도록 핸들/로그인/한 모든 가능한 경우에 오류가?

도움이 되었습니까?

해결책

반대로 무엇을 어떤 다른 사람을 게시,거기에 아무것도 잘못 잡는 모든 예외가 있습니다.중요한 것은 그들 모두를 처리합니다.이 있는 경우 stack overflow 또는 밖으로 메모리 상태,응용 프로그램 종료해야한다.또한,유지 하는 마음에 OOM 조건을 방지할 수 있습의 예외 처리기에서 올바르게 실행되고 있습니다.예를 들어,당신의 예외 처리기 대화 상자를 표시 예외 메시지는 경우에,당신은 메모리가 충분하지 않을 수 있습니다 왼쪽에는 대화 상자에 대한 표시입니다.최 그것을 기록하고 즉시 종료합니다.

다른 사람으로 언급은 이와 ThreadException 처리할 수 있는 이벤트를 수집하는 예외 수 있는 그렇지 않으면 얻을 놓쳤다.단순히 예외를 처리기의 주위에 당신의 메인 루프(가정 winforms 응용 프로그램).

또한,당신은 당신이 알고 있어야 합 OutOfMemoryExceptions 지 않는 항상 던져 대한의 조건입니다.는 OOM 상태를 실행할 수 있습니다 모든 종류의 예외에 코드 또는 프레임워크에는 반드시 없어 아무것도 사실과 함께 할 수는 진짜 근본적인 조건에 메모리가 부족합니다.나는 빈번하게 보 InvalidOperationException 는 경우 경우 근본 원인이 실제로 메모리가 부족합니다.

다른 팁

할 수 있는 이벤트를 추가 핸들러를 사용되지 않.이벤트,그리고 호출할 경우 예외가 발생하지 잡았다.

이 문서에서 codeproject 우리의 호스트로 제프우드 은 당신이 필요합니다.는 코드를 포함하 catch 외과는 최고의 pratices 보여주는 정보에 대해 충돌하는 사용자.

글로벌입니다.맨 클래스입니다 당신의 마지막 줄다.......보

protected void Application_Error(Object sender, EventArgs e)

방법

알고 있는 몇 가지 예외가 있는 위험을 잡을 또는 주로지지 않는,

  • OutOfMemoryException:아무거나 당신에서 잡을 처리할 수 있 메모리를 할당(에서 관리하거나 관리하지 않 측 CLR)고 따라서 다른 OOM
  • StackOverflowException:따라 여부를 CLR 감지 충분히기를 얻을 수 있습니다,당신은 알립니다.최악의 경우,그것은 단순히 죽이는 과정이다.

당신이 사용할 수 있는 사용되지 않.CurrentDomain.이 얻을 수 있는 이벤트입니다.

지만 잡기 모든 예외 없이 계획하여 제대로 처리들은 확실히 나쁜 연습,난이라고 생각하고 실패 응용 프로그램에서 우아한 방법입니다.충돌하지 않아야를 놀라게 사용자가,죽음 그리고 적어도 그 표시에 대한 설명 오류가,몇 가지 정보를 보고서에 기술 지원과 최상 버튼 응용 프로그램을 닫고 다시 시작합니다.에 이상적인 세계,응용 프로그램을 할 수 있어야 덤프 디스크에 있는 사용자가 데이터를 복구하려고 그것은(하지만 저는 이것은 너무 많이 묻).

어쨌든,일반적으로 사용:

AppDomain.CurrentDomain.UnhandledException

수도 있습니다와 함께 갈 응용 프로그램.ThreadException 이벤트입니다.

면 나는 개발.인터넷 응용 프로그램 안에서 실행 되 COM 기반의 응용 프로그램이 이벤트는 매우 활용으로 사용되지 않.CurrentDomain.이 작동하지 않은 경우에.

나는 당신을 생각해야는 오히려하지 않더라도 모두 잡을 제외 하지만 더 나은 그들이 수가 사용자에게 표시됩니다.는 이유에 대한 이해야한다는 것입니다만 예외를 포착할 수 있는 실제로 처리합니다.로 실행하는 경우 일부 예외는 원인이 되는 프로그램을 중지하지만 아직도 그것을 잡을,이의 원인이 될 수 있습이 훨씬 더 심각한 문제입니다.또한 읽 FAQ:왜 FxCop 에 대하여 경고 catch(Exception)?.

다는 것을 알고 있는 이러한 예외 처리되지 않은 변경할 수 있습의 보안 요구사항 응용 프로그램입니다.귀하의 응용 프로그램을 중지할 수 있습니다 올바르게 실행되고 특정 상황에서(에서 실행할 경우 네트워크 공유,etc.).을 테스트해야 합니다.

그것은 다치게 하지 않을 모두 사용 사용되지 않.CurrentDomain.이 응용 프로그램.ThreadException

그러나 유지 하는 마음에는 예외에조레 잡은 이들에 의해 처리기;사 SafeThread 보조 스레드가 필요한 경우

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