Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.07.2008, 14:00   #1
jorjik
 
Регистрация: 26.06.2008
Сообщений: 5
По умолчанию не работает вложенный catch

Проблема в следующем:
try {
условие проверки подключения к базе sys/sys
}
catch (EDatabaseError&EDatabaseError) {

try {
условие проверки подключения к базе system/sys
}

catch(EDatabaseError&EDatabaseError ) {

}
}

при компиляции жалуется на второй catch
Type name expected.

Если ставлю во втором catch перехватывать все - catch(...), то нормально работает, мне нужно чтобы только EDatabaseError ловил. Не поскажете в чем моя ошибка ? Спасибо за помощь.
jorjik вне форума
Старый 13.07.2008, 17:59   #2
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Ваша ошибка в том, что имя типа и переменной совпадают.
filosof_x86 вне форума
Старый 13.07.2008, 18:26   #3
jorjik
 
Регистрация: 26.06.2008
Сообщений: 5
По умолчанию

filosof_x86, в первом catch это EDatabaseError&EDatabaseError прокатывает а во втором нет, может подскажете более подробно почему ?
jorjik вне форума
Старый 13.07.2008, 18:38   #4
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Потому, что EDatabaseError для второго catch будет не типом данных, а некой переменной. Вот аналогичный код:

Код:
struct er {int a;};

int main()
{
  er er;
  er.a = 0; // теперь er - это не структура, а переменная
  er &b;    // и здесь er это переменная
}
filosof_x86 вне форума
Старый 13.07.2008, 21:39   #5
jorjik
 
Регистрация: 26.06.2008
Сообщений: 5
По умолчанию

filosof_x86, что я должен вместо EDatabaseError написать, чтобы это исключение ловил ?

Влом ответить ?

Последний раз редактировалось merax; 13.07.2008 в 22:35.
jorjik вне форума
Старый 13.07.2008, 22:37   #6
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

А, что кто-то обязан тебе ответить. Тебе дали знать где ошибка и дали намек какая именно. Изволь дальше думать сам. Еще раз такая предъява и разговор будет коротким. Надо уважать других.
merax вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
try ... catch CBeginner Общие вопросы C/C++ 3 23.06.2008 07:12
Как работает win rar? Altera Свободное общение 2 30.03.2008 08:05
try... catch Kocapb Общие вопросы C/C++ 6 19.12.2007 04:30
не работает! RECREATOR Общие вопросы Delphi 6 29.11.2007 12:42
Не работает try except!!! Radost БД в Delphi 17 03.06.2007 11:07