@nikifovadim
Software Engineer

Try and Finally — Что вернет функция?

Что произойдет по моему мнению
Если ...somecode… в этом блоке (try) не возникло исключений, то после его выполнения он выйдет из функции на операции return и вернет false. Если же в блоке try вдруг возникает исключение, то обычный порядок выполнения останавливается, и среда CLR начинает искать блок catch, который может обработать данное исключение. Если нужный блок catch найден, то он выполняется, и после его завершения выполняется блок finally. Если нужный блок catch не найден, то при возникновении исключения программа аварийно завершает свое выполнение.

Code:
bool f() { 
    try {
        ...somecode…
	return false; // Если не возникло исключений, то после его выполнения он выйдет из функции на операции return и вернет false?
    } finally {
	...some code…
	return true; // Если возникло исключений и нужный блок catch найден и тогда выполниться finally вернет true?
    }
}


Верны ли мои утверждения?
  • Вопрос задан
  • 295 просмотров
Решения вопроса 1
Твой код не скомпилируется :)
Нельзя в блок finally пихать return.
https://docs.microsoft.com/en-us/dotnet/csharp/mis...

А так вообще да - finally выполняется в любом случае, хоть выпало хоть не выпало исключение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
HemulGM
@HemulGM
Delphi Developer, сис. админ
finally выполнится в любом случае. В этом его смысл
Читай документацию
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы