2017-01-25 2 views
2

Я хотел бы знать, есть ли инструкция else, например, в python, что при присоединении к структуре try-catch , делает блок кода внутри него только исполняемым, если никаких исключений не было выброшены/пойманы.Операция C++ Else в обработке исключений

Например:

try{ 
    //code here 
}catch(...){ 
    //exception handling here 
} ELSE { 
    //this should execute only if no exceptions occurred 
} 
+3

Нет, не существует. –

ответ

-2

Просто верните (или перебросьте) функцию в предложении catch.

void func() 
    { 

     try 
     { 

      // Do something 
     }  
     catch(...) 
     { 
      // clean up the mess 
      return; 
     } 

    // do what comes next... the catch clause won't get here. 
} 
+2

Или вы можете просто сделайте все это в блоке try. Исключение вышвырнет вас, как только это произойдет. – user4581301

+0

Я вижу много случаев, когда исключения не пойманы, но ни один из них не исполняется после того, как исключены исключения. – user4581301

+0

Вот если вы поймаете исключение. Чтобы выполнить эту работу, вы должны окружить практически все с помощью 'catch (...)', чтобы убедиться, что вы получаете все исключения. Это приведет к гораздо более сложному коду. – user4581301

7

Почему бы не просто положить его в конце блока попробовать?

+0

Просто хотел узнать, были ли какие-либо, я не знаю, это просто делает код более приятным – J3STER

+1

@ J3STER не согласен с этим. Заключение в случае «else» поражает точку с одним потоком кода с исключениями, которые полностью игнорируются, если они не происходят. Все в блоке try является «else», если исключение не выбрано. – user4581301

+2

@ J3STER: Зачем это сделать код лучше? Существующий механизм исключения уже позволяет вам делать именно то, что вы хотите * без каких-либо дополнительных структур *. –

Смежные вопросы