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.Object
ToString
답변
추가하고 싶습니다 : 예외 외부에 스택을 인쇄하려면 다음을 사용할 수 있습니다.
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 라이브러리에서 수행 할 수 없습니다.