C ++ Re бросок исключение дает ошибку
-
26-09-2019 - |
Вопрос
Я пытаюсь поймать «конкретное» исключение (форматеэксемент ^ или OverflowException ^), а затем перебросить его и поймать его в «общее» исключение (исключение ^).
При запуске я даю ему исключение формата через вход. Затем я получаю эту ошибку в диалоговом окне: «Необработанное исключение типа« System.Formatexception »произошло в FutureValue.exe Дополнительная информация: входная строка не была в правильном формате». Когда я нажимаю «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");
}
Решение
Рентгеновое выражение (бросок без назначения_Экспрессией) вызывает изначально брошенный объект Rethrown. Поскольку исключение уже было поймано на прицелах, в котором возникает выражение ретроу, он представляет собой Rethrown к следующему динамически оградующему блоку попробовать. Следовательно, он не может быть обрабатываться от блоков CALL в объеме, в котором произошло выражение ритровы.
Принимая во внимание, вы можете захотеть написать ваш код так:
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");
}
Другие советы
Есть ли попробуйте поймать блок над этим?
Вы только что бросили исключение с выпиской броска, никто не ловит его. Отладчик взял вас на то, где был брошен исключение