사용자 정의 예외를 사용할 수 있습니다. 예외는 다음과 같이 throw 될 수 있습니다.사용자 정의 예외 - catch-in을 시도하십시오. C#
try
{
int foo = int.Parse(token);
}
catch (FormatException ex)
{
//Assuming you added this constructor
throw new ParserException(
$"Failed to read {token} as number.",
FileName,
LineNumber,
ex);
}
그러나 정상적인 try catch 블록에서는 예외를 발생 시키면 스택 추적이 지워집니다.
try
{
ForthCall();
}
catch (Exception ex)
{
throw ex;
}
그래서 사용자 정의 예외에서 스택 추적을 지우지 않고 예외를 어떻게 사용합니까?
ParserException 생성자에서 try 블록 (FormatException)의 원본 예외를 내부 예외로 전달하므로 InnerException 멤버를 통해 원래 스택 추적을 얻을 수 있습니다. – Den
어떻게 내부 예외로 말할 수 있습니까? –
언급 한 링크의 코드에 따르면 그러나이 링크는 사용했던 생성자의 완전한 구현을 제공하지 않습니다. ParserException (string msg, Exception inner) : base (msg, inner) { }을 수정하십시오. 그래서 사용자 지정 예외를 잡는 동안 원래 Stack을 YourCustomExceptionObject.InnerException.StackTrace로 가져올 수 있습니다. – Den