2015-07-16 7 views
2

У меня есть mainloop в моей программе на C++. У меня также есть функция обработки исключений.Вызов «продолжение» в функции

Это синтаксис выглядит следующим образом:

void handleEx(int errorCode) 

После вызова этой функции я всегда использовать continue; перезагрузить цикл, так что это выглядит следующим образом:

if(/*exception occured*/) 
{ 
    handleEx(5); 
    continue; 
} 

Можно ли поставить continue; внутри функции, поэтому мне не пришлось бы переписывать эту команду и {}?

+1

Короткий ответ: нет. Во всяком случае, вы точно не спрашиваете. – cdhowie

+0

Невозможно ответить (укажите лучший пример) –

+1

Вы не хотите, чтобы вы продолжали выполнять вызов функции. Положив его таким образом, он становится понятным для всех, что происходит, когда возникает исключение. Если вы поместите продолжение внутри функции, и кто-то не смотрит на эту функцию, они не поймут, что вы пропустите остальную часть цикла, когда возникает исключение. Всегда держите его простым. – RyanP

ответ

2

Вы должны иметь функцию возвращать bool поэтому ваш заголовок функции будет выглядеть bool handleEx(int errorCode);, а затем в цикле в то время как вы можете сделать:

while(something) { 
    //... 
    if(handleEx(myError)) continue; 
    //... 
} 
+0

Я всегда хочу «продолжить» после этого funtion-вызова, поэтому у меня бы получилось бы второе, если бы там, что всегда верно. – kim366

+0

@ kim366 Что вы имеете в виду? И что хорошего было бы «если», если оно всегда было правдой? – scohe001

+0

@ scohe001 В этом смысл. Вы говорите, что 'handleEx' должен возвращать true, если остальную часть итерации следует пропустить. Но OP говорит, что ее всегда следует пропустить, когда вызывается' handleEx'. 'd всегда возвращает true, а if всегда будет в ветке then. И это не имеет смысла. Поэтому нет смысла возвращать функцию boolean. – sepp2k