Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <locale.h>
- ////////////////////////////////////////////////////////// TaleTellingClass: Простой класс, который информирует
- struct TaleTellingClass // о своем создании и уничтожении...
- {
- TaleTellingClass() { printf("Вызываем конструктор TaleTellingClass \n"); }
- ~TaleTellingClass() { printf("Вызываем ДЕСТРУКТОР TaleTellingClass \n"); }
- };
- FILE *fp;
- //////////////////////////////////////////////////////////
- void function1() //
- {
- if((fp = fopen("test.txt", "r")))
- {
- char sz[123];
- fscanf(fp, "%s", sz);
- printf("Читаем из файла до первого пробела: %s \n", sz);
- fclose(fp);
- }
- else
- {
- printf("Выбрасываем исключение...\n"); // Выбросить 'const char*'
- throw "Ошибка при открытии файла..."; // В противном случае, файл открыт успешно
- }
- }
- //////////////////////////////////////////////////////////
- void function2() //
- {
- TaleTellingClass tellme; // Создать локальный объект, чтобы проверить вызов деструктора при разматывании стека
- function1(); // Вызвать функцию, выбрасывающую исключение
- }
- //////////////////////////////////////////////////////////
- int main() //
- {
- setlocale(LC_ALL, "Rus");
- try
- {
- printf("Входим в try-блок...\n");
- function2();
- printf("Выходим без ошибок (исключений) из try-блока...\n");
- }
- // !!! Здесь (между try & catch)нельзя размещать код !!!
- catch(int i)
- {
- printf("Вызван обработчик 'int' с %d \n", i); return -1;
- }
- catch(const char* p)
- {
- printf("Вызван обработчик 'char*’ [%s] \n", p); return -1;
- }
- catch(...)
- {
- printf("Вызван обработчик catch_all...\n"); return -1;
- }
- return 0; // Обошлось без приключений
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement