2010-05-07 5 views
6

내 응용 프로그램에서 메시지 상자를 사용하여 오류 정보를 표시하고 있습니다.C# MessageBox 오류 메시지

try 
{ 
    // Something... 
} 
catch (SystemException ex) 
{ 
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 

처음에는 괜찮 았지만 내 프로그램이 커짐에 따라이 오류가 발생한 try-catch 블록을 찾는 것이 점점 어려워졌습니다. 오류가 생성 된 코드 줄 또는 함수를 표시하는 방법이 있습니까? Microsoft Visual C# 2008 Express Edition을 사용하고 있습니다. 감사.

+0

오류 상자를 표시하는 경우 사용자로부터 지저분한 세부 정보 (예 : StackTrace)를 숨기려고합니다. 그러나 나중에 디버깅 할 수 있도록 StackTrace를 사용하여 어딘가에 예외를 기록하는 것이 좋습니다. NLog 또는 Log4Net과 같은 좋은 로깅 패키지가 있으며,이를 사용하여 도움을받을 수 있습니다. –

답변

6

이렇게하면 오류 (스택 트레이스)

1

는 그냥 Exception.StackTrace 표시를 발생하는 방법에 대한 많은 정보를 제공 할 것입니다. 문제가되는 코드 줄을 찾는 데 도움이되는 모든 종류의 유용한 정보가 포함됩니다.

0

Exception.StackTrace이 있는데, 이는 메시지 상자의 경우가 많습니다. 또한 Exception.TargetSite.Name도 도움이 될 것입니다.

0

ex.StackTrace()를 검토하면 예외 발생 위치의 전체 세부 정보를 얻을 수 있습니다. InnerException을 검사 할 수도 있습니다.

0

오류 메시지에 몇 가지 추가 정보를 추가하면 더 쉽게 찾을 수 있습니다. 메시지 상자가 생성되는 위치에 따라 "오류"문자열 다음에 텍스트를 추가 할 수 있습니다.

throw되는 예외에는 오류에 대한 자세한 설명을 제공하는 몇 가지 함수가 포함되어 있습니다.

+0

가능한 모든 catch 블록에 대해 새로운 오류 메시지 (내가 볼 가능성이 높음)를 생각하고 싶지 않습니다. –

+0

나는 수동으로 텍스트를 추가하지 않고 ex.ToString()을 사용하는 줄을 의미한다. –

0

사용할 수있는 몇 가지 옵션이 있습니다. 디버그 빌드에 줄 번호가

그러나 포함됩니다 경우 상황에 맞는 정보를

  • 을 부여 할 경우 메시지 상자에

    1. 넣어 뭔가, 스택 추적 정보를 표시, 나는 주위를주의 것 이 연습, 당신이 너무 많아지고 어디에 있는지 파악할 수 없다면, 문제가 없는지 확인하기 위해 코드를 다시 구조화하기 시작할 것입니다.

  • +0

    모든 가능한 catch 블록에 대해 새로운 오류 메시지 (생각하지 않을 가능성이 높음)를 생각하고 싶지는 않습니다. –