我试图捕获一个“特定”异常(formatexception^或velflowException^),然后将其扔进并捕获在“常规”异常(异常^)捕获块中。

运行时,我通过输入给它一个格式例外。然后,我在对话框中获取此错误:“ futurevalue.exe中出现的类型'system.formatexception'的例外,其他信息:输入字符串不是正确的格式。”当我单击“休息”时,我需要第232行。

这是部分代码:

try
{
...
}
catch(FormatException^ ex)
{
      MessageBox::Show("FormatException Occured.  Message: " + ex->Message);
      throw;
}
***line# 232*** catch(OverflowException^ ex)
{
      MessageBox::Show("Overflow Occured. Message: " + ex->Message);
      throw;
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}
有帮助吗?

解决方案

rethrow表达式(无分配_expression的投掷)会导致最初抛出的对象被重新引起。由于已经在发生重新表达式的范围上捕获了例外,因此将其重新回到下一个动态封闭的尝试块。因此,在重新表达的范围处的捕获块无法处理。

考虑到上述,您可能需要像这样编写代码:

try
{
    try
    {
       //...
    }
    catch(FormatException^ ex)
    {
          MessageBox::Show("FormatException Occured.  Message: " + ex >Message);
          throw;
    }
    catch(OverflowException^ ex)
    {
          MessageBox::Show("Overflow Occured. Message: " + ex->Message);
          throw;
    }
}
catch(Exception^ ex)
{
      MessageBox::Show("TESTING");
}

其他提示

上面有尝试捕获块吗?

您只是在投掷声明中抛出了一个例外,没有人抓住它。调试器将您带到了抛出例外的地方

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top