이 기술에 대해 많이 알지 못하며 예외 스택이 표시되는 방법을 찾지 못했습니다. 따라서 체인 된 예외 스택 예제
, 몇 가지 기본적인 질문 :- 방법은 2 개 독립적 인 연속 예외 표시됩니다?
- 몇 가지 연결 예외가 어떻게 표시됩니까?
- 은 스택의 상단 또는 하단에 표시되는 근본 원인입니까?
이 기술에 대해 많이 알지 못하며 예외 스택이 표시되는 방법을 찾지 못했습니다. 따라서 체인 된 예외 스택 예제
, 몇 가지 기본적인 질문 :직접 해보기가 쉽습니다. 예를 들어 :
using System;
class Test
{
static void Main(string[] args)
{
try
{
Top();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
static void Top()
{
try
{
Middle();
}
catch (Exception e)
{
throw new Exception("Exception from top", e);
}
}
static void Middle()
{
try
{
Bottom();
}
catch (Exception e)
{
throw new Exception("Exception from middle", e);
}
}
static void Bottom()
{
throw new Exception("Exception from bottom");
}
}
결과 (이 충분히 있다면 첫 두 줄을 한 줄에있을 것이다) : 두 개의 독립적 인 연속 예외가 발생하는 경우
이System.Exception: Exception from top ---> System.Exception: Exception from middle
---> System.Exception: Exception from bottom
at Test.Bottom() in c:\Users\Jon\Test\Test.cs:line 43
at Test.Middle() in c:\Users\Jon\Test\Test.cs:line 33
--- End of inner exception stack trace ---
at Test.Middle() in c:\Users\Jon\Test\Test.cs:line 37
at Test.Top() in c:\Users\Jon\Test\Test.cs:line 21
--- End of inner exception stack trace ---
at Test.Top() in c:\Users\Jon\Test\Test.cs:line 25
at Test.Main(String[] args) in c:\Users\Jon\Test\Test.cs:line 9
, 첫 번째가 정상을 중단합니다 처리 될 때까지 프로그램의 실행. 그런 다음 두 번째 예외는 프로그램이 첫 번째 예외로 종료되지 않은 경우 동일한 방식으로 throw됩니다.
연결 예외의 경우 마지막으로 throw 된 예외가 표시되지만 다른 예외를 처리 할 때 마지막 예외가 throw됩니다. 예를 들면 다음과 같습니다.
스택의 맨 위에는 BarException이 표시되고 하단에는 FooException이 표시됩니다. 희망 나는 아무것도 놓치지 않았다.
"체인으로 연결된"으로 무엇을 말하고 있습니까? [Exception.InnerException] (http://msdn.microsoft.com/en-us/library/system.exception.innerexception.aspx) 속성을 의미합니까? –