C# Java의 Exception.printstacktrace ()에 해당합니까?
-
22-07-2019 - |
문제
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# Logging API가 없습니까?
즉, log4net을 사용하십시오.
또한 log4n의 포트로 log4n을 봅니다.