我的理解是,当抛出异常时,它会冒出调用堆栈直到它被处理(在try/catch块中)并且如果这种情况从未发生过,则异常最终会到达Program.Main()并且如果仍未处理,则被运行时视为"未处理的异常".
您的描述虽然不是不准确,但却非常不完整; 你没有描述以下情况会发生什么:
请注意,C#语言不会公开最后两个CLR功能,但它们仍然存在.
这三种情况加上普通捕获块的控制流程可能非常复杂.
如果您想更全面地了解其工作原理,我建议您仔细阅读Christopher Brumme关于此主题的详细文章:
http://blogs.msdn.com/b/cbrumme/archive/2003/10/01/51524.aspx