2011-03-31 2 views
1

메서드가있는 클래스가 있고이 메서드 내에서 예외를 throw하려고합니다. 이 문서에서는 오류의 원인을보다 쉽게 ​​찾으려고 예외가 throw 된 메서드와 클래스를 참조하려고합니다.참조 메서드 및 예외 클래스 (C#, .net)

public class SomeClass 
{ 
    public void SomeMethod() 
    { 
     (..) 
     Throw new Exception("An error occurred. Method:" + ?? + ", Class:" + ?? +"); 
    } 
+3

예외가 어디에 던져 졌는지 알려주는 스택 추적이 있다는 것을 알고 계십니까? 예외 메시지에서 예외 메시지를 다시 만들 필요는 없습니다. 예외 메시지는 예외가 발생한 원인을 설명합니다. –

+0

이 모든 정보는 스택 추적에 포함되어 있습니다. – Andrey

답변

1

당신은 실제로 이미 모든 정보를 그냥 같은과 예외의 StackTrace 속성을 통해 액세스해야합니다

 try 
     { 
      // to do something exceptional 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.StackTrace); 
     } 

이 샘플은 그냥 수 std 쓰기 있지만 스택 트레이스 정보를 아무것도 할 수 당신 그것을 파일이나 db에 로깅하는 것을 포함하여 필요합니다.

3

당신은 그렇게 할 필요가 없습니다. try-catch 블록에서 예외의 StackTrace 속성을 확인하십시오.

2

해당 정보는 이미 스택 추적에 있습니다. 메시지에 포함시킬 필요가 없습니다.

을 입력하면 MethodBase.GetCurrentMethod()이됩니다. 클래스의 경우, 메소드가 호출 된 실행 시간 객체의 클래스 또는 실제로 실행중인 메소드를 원합니까? (비록 스택 추적을 고수 하겠지만 ...)

+0

정확하게 "SomeMethod"를 갖고 싶습니다. 문제가 발생한 곳이기 때문에이 정보를 갖고 싶습니다. – AGuyCalledGerald

+0

@ Jan-Frederik : 그러나 당신은 * 클래스 *도 요청했습니다. 그것이 내가 정확한 행동의 관점에서 질문하는 것입니다. 그것은 어쨌든, 당신이 단지 스택 추적을 사용해야합니다 ... –

관련 문제