有些情况下,当.NET框架确定catch块抛出的异常不会被代码中的任何地方捕获时,控件不会通过try-catch-finally语句的finally块传递
是否可以配置此行为,如果是,如何配置?
(在你告诉我控制总是通过finally块之前,请随时进行以下实验并报告你的观察结果。)
答案 0 :(得分:2)
当我重新抛出异常时,按预期工作,代码:
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Start");
try
{
System.Console.WriteLine("Try");
throw new Exception("ttt");
}
catch (System.Exception ex)
{
System.Console.WriteLine("Catch");
throw;
}
finally
{
System.Console.WriteLine("Finally");
}
}
}
这是我的代码输出:
Start
Try
Catch
Unhandled Exception: System.Exception: ttt
at ConsoleApplication1.Program.Main(String[] args) in C:\Users\mckeownto01\Documents\Visual Studio 2010\Projects\MvcApplication1\ConsoleApplication1\Program.cs:line 21
Finally
答案 1 :(得分:0)
如果你有一个WinForms应用,请在Application.Run(new Form1());
例程中Main
之前添加这些行。
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += Application_ThreadException;
并将此方法添加到Program
类:
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
//TODO: Handle the error here.
}
答案 2 :(得分:0)
我认为观察到的行为与VS调试器的配置方式有关。