Как сделать рекурсию try catch в операторе switch итеративной?

#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. Я немного разбираюсь в исключениях, но мне трудно найти метод, который подходит для преобразования этой рекурсивной функции в итеративную функцию без удаления исключений и сохранения всех путей открытыми во время итерации.