当我将SecondMain()
放入try块时,secondMain()
内的最后一个块正在执行。但是当我把它放在外面时它没有执行。为什么不执行?
static void Main(string[] args)
{
try
{
SecondMain(args); //try putting
Console.WriteLine("try 1");
throw new Exception("Just fail me");
}
finally
{
Console.WriteLine("finally");
}
}
static void SecondMain(string[] args)
{
try
{
throw new StackOverflowException();
}
catch (Exception)
{
Console.WriteLine("catch");
throw;
}
finally
{
Console.WriteLine("finally");
}
}
答案 0 :(得分:0)
我尝试了你的代码,无论是从try块的外部还是内部调用SecondMain()方法都无关紧要。
程序总是崩溃,因为你不处理异常,而.Net环境中的MainExceptionHandler必须处理这个问题。他得到一个未处理的例外并退出你的程序。
试试这个,现在我觉得你的代码表现得像预期的那样。
static void Main(string[] args)
{
try
{
SecondMain(args); //try putting
Console.WriteLine("try 1");
throw new Exception("Just fail me");
}
catch(Exception)
{
Console.WriteLine("Caught");
}
finally
{
Console.WriteLine("finally");
}
}
static void SecondMain(string[] args)
{
try
{
throw new StackOverflowException();
}
catch (Exception)
{
Console.WriteLine("catch");
//throw;
}
finally
{
Console.WriteLine("finally");
}
}
我希望这是您正在寻找的答案。