[c#] Java의 Exception.printStackTrace ()에 해당하는 C #?

Java와 동등한 C # 메소드가 Exception.printStackTrace()있습니까? 아니면 InnerExceptions를 통해 작업하면서 직접 작성해야합니까?



답변

이 시도:

Console.WriteLine(ex.ToString());

에서 http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx :

ToString의 기본 구현은 현재 예외를 발생시킨 클래스의 이름, 메시지, 내부 예외에서 ToString을 호출 한 결과 및 Environment.StackTrace를 호출 한 결과를 가져옵니다. 이러한 멤버 중 하나라도 null이면 해당 값이 반환 된 문자열에 포함되지 않습니다.

위의 코드에서는 직접 받아 호출 ToString하는 오버로드가 있으므로 호출 이 필요하지 않습니다 .System.ObjectToString


답변

추가하고 싶습니다 : 예외 외부에 스택을 인쇄하려면 다음을 사용할 수 있습니다.

Console.WriteLine(System.Environment.StackTrace);


답변

Drew가 말했듯이 예외를 문자열로 변환하면됩니다. 예를 들어,이 프로그램은 :

using System;

class Test
{
    static void Main()
    {
        try
        {
            ThrowException();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

    static void ThrowException()
    {

        try
        {
            ThrowException2();
        }
        catch (Exception e)
        {
            throw new Exception("Outer", e);
        }
    }

    static void ThrowException2()
    {
        throw new Exception("Inner");
    }
}

다음 출력을 생성합니다.

System.Exception: Outer ---> System.Exception: Inner
   at Test.ThrowException2()
   at Test.ThrowException()
   --- End of inner exception stack trace ---
   at Test.ThrowException()
   at Test.Main()


답변

http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx

Console.WriteLine (myException.StackTrace);


답변

  catch (Exception ex)
{
    Console.WriteLine(ex.StackTrace);
}


답변

Java의 Log4J처럼 예외를 인수로 받아 모든 것을 처리 할 수있는 C # 로깅 API가 없습니까?

즉, Log4NET을 사용하십시오.


답변

@ ryan-cook 대답이 나를 위해 작동하지 않았기 때문에 예외없이 스택 추적을 인쇄하려면 다음을 사용할 수 있습니다.

System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace();
Console.WriteLine(stackTrace)

불행히도 이것은 PCL이나 .NETStandard 라이브러리에서 수행 할 수 없습니다.