#c #exception #recursion #iteration #try-catch
#c #исключение #рекурсия #итерация #try-catch
Вопрос:
Я пытаюсь создать функцию, которая выглядит так, как показано ниже. Я хочу сделать это итеративным, но я не уверен, так как мне нужно держать все пути открытыми.
someFunction( parameters)
{
//do stuff
switch( thing )
case: one
if (something true)
{
try { someFunction( different parameters ) } catch(...) { throw }
case: two
//if else with the else being a throw exception.
case: three
// same
case: four
...
default
return some value
Ответ №1:
Я не очень хорошо понял ваш вопрос, но я постараюсь помочь!
Как использовать ИСКЛЮЧЕНИЯ:
...
try
{
if(b == 0)
throw("A number cannot be devided by zero!n");
c = a/b
}
catch(string error)
{
cout << "ERROR: "<< error << endl;
}
return c
...
Вы могли бы использовать это в операторе switch, после catch я вернусь к делу.
switch(c)
{
case 0:
...
try { ... throw();}
catch() { ... error treatment}
...
break;
case 1:
...
}
Комментарии:
1. Я немного разбираюсь в исключениях, но мне трудно найти метод, который подходит для преобразования этой рекурсивной функции в итеративную функцию без удаления исключений и сохранения всех путей открытыми во время итерации.