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)属性? –