C#在try catch中的错误行上停止

时间:2014-05-30 02:08:41

标签: c# try-catch breakpoints

如果我运行下面调用Test1()的代码,VS2012将很好地破坏该行并向我显示正在发生的事情。如果我注释掉Test1并放入Test2,那么try catch不会停在线上,只是将它记录到控制台。

我怎样才能让VS2012停在错误行上,即使它被try catch语句包围?

private void Button_Click(object sender, RoutedEventArgs e)
{
  //Test1(); // No try catch - stops on error line dividing by zero.
  Test2(); // Try catch - Just writes out to console.
}

private void MakeError()
{
  int i = -1;
  i += 1;
  int j = 1 / i;
  Console.WriteLine(j.ToString());
}

void Test1()
{
  Console.WriteLine("MakeError in Test1");

  MakeError();
}

void Test2()
{
  Console.WriteLine("MakeError in Test2");
  try
  {
    MakeError();
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
  }
}

4 个答案:

答案 0 :(得分:4)

虽然其他答案是正确的,但默认情况下这是故意行为,如果您愿意,可以告诉Visual Studio提醒您注意这些例外情况。

How to: Break When an Exception is Thrown

在“调试”菜单上,单击“例外”。

在“例外”对话框中,为整个例外类别选择“投掷”,例如“公共语言运行时例外”。

-OR -

展开一类异常的节点,例如,公共语言运行时异常,并为该类别中的特定异常选择“投掷”。

答案 1 :(得分:1)

你想要的是Visual Studio 在抛出异常时中断执行

在“调试”菜单上,单击“例外”。

在“例外”对话框中,为整个例外类别选择“投掷”,例如(您的案例),“公共语言运行时例外”。

MSDN Reference.

答案 2 :(得分:0)

Visual Studio只会在存在未处理的异常时进行干预,在这种情况下除以0. try...catch处理异常。由于没有未处理的异常,Visual Studio不会跳出来。

答案 3 :(得分:0)

尝试使用catch语句,以便即使发生异常,仍然可以执行执行流程。调试器仅在未处理异常时停止,try catch执行此操作。

这是故意的。

相关问题