Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
IVSasha
6 / 6 / 3
Регистрация: 29.07.2015
Сообщений: 61
#1

Error: 'finally' was not declared in this scope - C++

03.10.2015, 13:47. Просмотров 725. Ответов 6
Метки нет (Все метки)

Как в С++ записать завершающий блок finally?
Error: 'finally' was not declared in this scope

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class DivideByZeroException {};
class IndexOutOfRangeException  {};
 
class UseFinally
{
public:
    static void GenException(int what)
    {
        int t;
        int nums[2];
        
        std::cout << "what: " << what << std::endl;
        
        try
        {
            switch (what)
            {
                case 0:
                    throw DivideByZeroException();
                    break;
                    
                case 1:
                    throw IndexOutOfRangeException();
                    break;
                    
                case 2:
                    return;
            }
        }
        catch (DivideByZeroException)
        {
            std::cout << "You can't divide by zero." << std::endl;
            return;
        }
        catch (IndexOutOfRangeException)
        {
            std::cout << "No element." << std::endl;
        }
        finally
        {
            std::cout << "End of try-block." << std::endl;
        }
    }
};
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2015, 13:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Error: 'finally' was not declared in this scope (C++):

'arr' was not declared in this scope 'sum' was not declared in this scope такие вот ошибки.(
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main () { setlocale(LC_ALL, &quot;rus&quot;); ...

[Error] 'If' was not declared in this scope
Недавно начал изучать Си++. Написал программу почти так же, как в примере из книги. #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

[Error] 'm' was not declared in this scope
почему программа не видит m,h??? пишет ошибку 'm' was not declared in this scope 'h' was not declared in this scope #include...

error: . was not declared in this scope
Здравстуйте! Недавно начал изучать С++. Нужно написать программу вычисления периметра треугольника через функцию. В коде возникла ошибка:...

[C++] Error: 'FindeMP2' was not declared in this scope
#include &lt;math.h&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; using namespace std; double Fx(double x) { ...

Error: 'printf' was not declared in this scope
Не могу скомпилировать код. #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;locale.h&gt; using namespace std; const float p =...

6
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 1
03.10.2015, 14:07 #2
Лучший ответ Сообщение было отмечено IVSasha как решение

Решение

В VS нет слова finally
Можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        __try
        {
            switch (what)
            {
                case 0:
                    throw DivideByZeroException();
                    break;
                    
                case 1:
                    throw IndexOutOfRangeException();
                    break;
                    
                case 2:
                    return;
            }
        }
        __finally
        {
            std::cout << "End of try-block." << std::endl;
        }
1
IVSasha
6 / 6 / 3
Регистрация: 29.07.2015
Сообщений: 61
03.10.2015, 15:09  [ТС] #3
zss, спасибо. еще хочу спросить. почему нельзя использовать вот такую запись
C++
1
2
3
4
5
6
7
8
9
__try
{
}
catch(...)
{
}
__finally
{
}
?

В C# ведь можно, а в С++ показывает ошибку на строке __finally:
error C3274: __finally без соответствующего try

Добавлено через 13 минут
С одним __try - __finally нельзя обработать исключение. Что толку от этой конструкции? Возникает ошибка и программа аварийно завершается.
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
03.10.2015, 17:28 #4
Цитата Сообщение от IVSasha Посмотреть сообщение
В C# ведь можно, а в С++ показывает ошибку на строке __finally:
C# - не C++.
1
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
03.10.2015, 18:00 #5
Цитата Сообщение от IVSasha Посмотреть сообщение
Как в С++ записать завершающий блок finally?
Никак. Да оно и не надо. Достаточно RAII.
1
igorrr37
1863 / 1481 / 749
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
03.10.2015, 18:45 #6
В борланде можно так
C++
1
2
3
4
5
6
7
8
try{
   try{
   }
   catch(){
   }
}
__finally{
}
и всё работает как ожидается
1
IVSasha
6 / 6 / 3
Регистрация: 29.07.2015
Сообщений: 61
04.10.2015, 10:55  [ТС] #7
Цитата Сообщение от castaway Посмотреть сообщение
C# - не C++.
да это и так понятно. думал, что в C++ тоже есть finally. Оказывается полноценной поддержки нет

Цитата Сообщение от Tulosba Посмотреть сообщение
Достаточно RAII
почитаю. спасибо

Цитата Сообщение от igorrr37 Посмотреть сообщение
В борланде можно так
иногда пользуюсь борландом. только больше всего нравится Визуал Студио
0
04.10.2015, 10:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2015, 10:55
Привет! Вот еще темы с решениями:

[Error] 'strspy_s' was not declared in this scope
код с учебника но выдает ошибку... библиотеки подключены...в чем причина может быть ? //#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; ...

[Error] 'log3' was not declared in this scope
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { double a,x,b,y; cout&lt;&lt;&quot;a=&quot;; cin&gt;&gt;a; cout&lt;&lt;&quot;b=&quot;;...

Ошибка: [Error] 'x' was not declared in this scope
Не могу понять в чём ошибка. Компилятор пишет что в строке cin&gt;&gt;x.name&gt;&gt;x.surname&gt;&gt;x.number; . Ошибка: 'x' was not declared in this scope....

[Error] 'cout' was not declared in this scope
Вот хоть убейте в чем ошибка не пойму...Перечитал несколько форумов. пробовал переписывать код. Одно и тоже. devcpp 5.4.2 - собственно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru