use*_*612 6 c# exception-handling exception try-catch
我写了一个简单的程序来测试一个理论,即"最终"块总是会执行,无论如何.但是,我从下面的pgm看到的是控制似乎永远不会进入外部最终区块.
我尝试在Visual Studio中使用F5和Ctrl-F5,结果相同.
有人可以解释为什么我看到这种行为吗?
控制台窗口的输出是:
内部捕获
内心终于
外部捕获
未处理的例外:
..然后应用程序崩溃
public class Program
{
static void Main()
{
try
{
try
{
string s = null;
s.ToString();
}
catch
{
Console.WriteLine("inner catch");
throw;
}
finally
{
Console.WriteLine("inner finally");
}
return;
}
catch
{
Console.WriteLine("outer catch");
throw;
}
finally
{
Console.WriteLine("outer finally");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在处理异常之后运行"外部最终".
以下是在调试器外部运行此代码的输出:
inner catch inner finally outer catch Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at SOConsole.Program.Main() in c:\Users\DaveShaw\Documents\Visual Studio 11\Pro jects\SO\SOConsole\Program.cs:line 35 outer finally Press any key to continue . . .
发生异常时,显示以下内容:

单击"取消"后,应用程序恢复并显示"外部最终".
如果由于某种原因你在有机会进入"最终外部"之前关闭你的应用程序,那么你将永远不会看到你的消息.如果应用程序的进程被"终止",则跳过最后的进程,以防它们包含阻止应用程序关闭的代码.否则,可能无法终止该过程.
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |