![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kamerrer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 27.6.2007 Репутация: нет Всего: нет |
Вот пишу такой код:
все переменные объявлены, нужно чтоб, если бы произошла ошибка чтения или переполенения буфера то программа продолжили работу и было выполнено действие указанное в блоке catch, я правильно сделал? у меня она не ловит ошибку=( Исправьте, пожалуйста. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
fprintf вроде не бросает исключений
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
во-первых, данные функции (fscanf и fprintf) не генерируют исключений.
во-вторых, ты пытаешься ловить только исключения типа void. Замени catch(void) на catch(...) - будешь ловить все исключения. |
|||
|
||||
| AndrRus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 14.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
kamerrer, сгенерируйте исключение. И стоить помнить, что если у Вас try, throw и catch в "одном месте", то проще, на мой взгляд, обработать ошибку на месте, а не генерировать исключение.
Это сообщение отредактировал(а) AndrRus - 18.11.2007, 16:59 |
|||
|
||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Если человек думал, что fscanf и fprintf генерируют исключения, то он сделал все "правильно" (throw то у нас, якобы, в функции). -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
| AndrRus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 14.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
DjoNIK,
Это ясное дело. Я это сказал к тому, что лучше обработать ошибку на месте, чем генерировать исключение к fscanf и fprintf "на месте обработки ошибки", подразумевая, что все происходит в main, где и находятся блоки try, catch. Это сообщение отредактировал(а) AndrRus - 18.11.2007, 20:46 |
|||
|
||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
В main происходит обработка исключительной ситуации, а его "генерация" (throw) в fscanf и fprintf (естественно с определенными выше допущениями). По идее этой парадигмы все должно быть именно так, или я в чем-то ошибаюсь? -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
| AndrRus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 14.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
DjoNIK, все верно, я имею ввиду тот факт, если пользователь сам сгенерирует свой тип исключения в main-е. Что-то вроде:
В таком случае, лучше сразу обработать все на месте - вот что я имею ввиду ;-) . Это сообщение отредактировал(а) AndrRus - 18.11.2007, 21:09 |
|||
|
||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Верно, но как это связанно с данным постом? -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
| AndrRus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 14.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
DjoNIK,
Так как fprintf и fscanf не генерируют исключений, то у начинающего может невольно возникнуть идея сгенерировать его, как я это описал в примере выше, вместо того, что его обработать на месте - вот почему я сделал лирическое отсупление на счет генерации исключения Это сообщение отредактировал(а) AndrRus - 18.11.2007, 21:28 |
|||
|
||||
| kamerrer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 27.6.2007 Репутация: нет Всего: нет |
У меня как у начинающегося и возника ошибка, почему то когда происходит чтение из файла и печать у меня появляется ошибка с надписью переполнение буфера.(buff) и я не знаю что делать, как можно о этого избавиться, тк исключения ничего не делают=( есть ли стандартные функции очистки системного буфера?
|
|||
|
||||
| DjoNIK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
kamerrer, один вопрос, один топик.
-------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |