Q
鏈式異常堆棧示例
1
A
回答
3
自己試試這個很容易。例如:
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
0
當兩個獨立的連續拋出異常,第一個將中斷正常程序的執行,直到它被處理。然後,如果程序沒有被第一個異常終止,則第二個異常將以相同的方式拋出。
至於鏈式異常,您將看到最後拋出的異常,但處理另一個異常等時拋出最後一個異常。例如:
void Foo()
{
throw new FooException("foo");
}
void Bar()
{
try
{
Foo();
}
catch(FooException ex)
{
throw new BarException("bar", /* innerException = */ ex);
}
}
因此,在堆棧的頂部,您將看到BarException並在底部顯示FooException。希望我沒有錯過任何東西。
相關問題
- 1. 堆棧展開異常C++
- 2. 堆棧溢出異常
- 3. 異常堆棧跟蹤
- 4. 堆棧溢出異常
- 5. 空引用異常堆棧
- 6. 異常和堆棧跟蹤
- 7. 堆棧空間異常
- 8. Perl消息::堆棧示例
- 9. 調用堆棧上的異常處理堆棧幀的順序
- 10. C#WPF Window.ShowDialog堆棧溢出異常
- 11. 異常(堆棧跟蹤)在一行
- 12. 如何從異常「跳」到堆棧幀?
- 13. 異常向上傳播調用堆棧
- 14. 異常java.lang.StackOverflowError:堆棧大小8MB
- 15. 之前堆棧溢出異常的main()
- 16. Control.EndInvoke重置調用堆棧異常
- 17. Java異常處理和堆棧跟蹤
- 18. 避免堆棧溢出異常
- 19. ASM ByteCode - 異常的堆棧跟蹤
- 20. Xcode異常停止在堆棧頂部
- 21. DllIImport函數拋出堆棧異常
- 22. 調試C# - 堆棧溢出異常?
- 23. 打印堆棧跟蹤元素異常
- 24. nlog異常佈局來格式化異常類型,消息和堆棧跟蹤
- 25. 如何處理異常異常java.lang.StackOverflowError:堆棧大小8MB
- 26. Eclipse控制檯不顯示Tomcat異常/堆棧跟蹤
- 27. 爲什麼在發生異常時不顯示堆棧跟蹤?
- 28. Android Studio 2.3未顯示異常堆棧跟蹤
- 29. Behat與PhpStorm不顯示異常的堆棧跟蹤
- 30. Java堆棧鏈表
你指的是什麼「鏈」?你的意思是[Exception.InnerException](http://msdn.microsoft.com/en-us/library/system.exception.innerexception.aspx)屬性? –