我正在尝试捕获'特定'异常(FormatException ^或OverflowException ^),然后重新抛出它并在'general'异常(异常^)catch块中捕获它。
运行时,我通过输入给它一个格式异常。然后我在对话框中收到此错误: “FutureValue.exe中发生了'System.FormatException'类型的未处理异常 附加信息:输入字符串的格式不正确。“ 当我点击'break'时,它会转到#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");
}
答案 0 :(得分:4)
rethrow表达式(throw without assignment_expression)导致重新抛出最初抛出的对象。因为异常已经在重新抛出表达式发生的范围内被捕获,所以它将被重新抛出到下一个动态封闭的try块。因此,它不能由重新抛出表达式发生的范围内的catch块处理。
考虑到上述情况,您可能需要编写如下代码:
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");
}
答案 1 :(得分:0)
上面有一个try catch块吗?
您刚刚使用throw语句抛出异常,没有人抓住它。 调试器已将您带到抛出异常的位置