c ++ rex异常给出错误
-
26-09-2019 - |
题
我试图捕获一个“特定”异常(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");
}
其他提示
上面有尝试捕获块吗?
您只是在投掷声明中抛出了一个例外,没有人抓住它。调试器将您带到了抛出例外的地方
不隶属于 StackOverflow