try - catch
От: Bug_z Австрия  
Дата: 04.06.04 09:11
Оценка:
вопрос : будет ли ловиться исключение CMyError во внешнем catch если сгенерилось во внутреннем try ?
try
{
try
{
throw CMyError();
}
catch(CError* err)
{
throw CMyError();
}
}
catch(CMyError* err)
{
}
[/ccode]
Re: try - catch
От: Bell Россия  
Дата: 04.06.04 09:17
Оценка:
Здравствуйте, Bug_z, Вы писали:

B_>вопрос : будет ли ловиться исключение CMyError во внешнем catch если сгенерилось во внутреннем try ?

B_>try
B_>{
B_> try
B_> {
B_> throw CMyError();
B_> }
B_> catch(CError* err)
B_> {
B_> throw CMyError();
B_> }
B_>}
B_>catch(CMyError* err)
B_>{
B_>}
B_>[/ccode]

Что такое CMyError()? Вызов функции?
Если CMyError все-таки не функция, а класс, то связан ли он с CError?

ЗЫ
Если CMyError — это класс, то ловиться ничего не будет — ты выбрасываешь объект класса CMyError, а ловишь указатель.
Любите книгу — источник знаний (с) М.Горький
Re: try - catch
От: rus blood Россия  
Дата: 04.06.04 09:18
Оценка:
Здравствуйте, Bug_z, Вы писали:

B_>вопрос : будет ли ловиться исключение CMyError во внешнем catch если сгенерилось во внутреннем try ?


B_>try 
B_>{
B_>  try
B_>  {
B_>    throw CMyError();
B_>  }
B_>  catch(CError* err)
B_>  {
B_>    throw CMyError();
B_>  }
B_>}
B_>catch(CMyError* err)
B_>{
B_>}


Будет.

Вот только наверно надо не CMyError*, а CMyError&.
Имею скафандр — готов путешествовать!
Re[2]: try - catch
От: Bug_z Австрия  
Дата: 04.06.04 09:18
Оценка:
Здравствуйте, Bell, Вы писали:

B>Что такое CMyError()? Вызов функции?

B>Если CMyError все-таки не функция, а класс, то связан ли он с CError?

B>ЗЫ

B>Если CMyError — это класс, то ловиться ничего не будет — ты выбрасываешь объект класса CMyError, а ловишь указатель.

CMyError — это класс, CError тоже класс. между собой никак не связаны.
Re: try - catch
От: Gramazeka Украина  
Дата: 04.06.04 09:19
Оценка: -1
Здравствуйте, Bug_z, Вы писали:

B_>вопрос : будет ли ловиться исключение CMyError во внешнем catch если сгенерилось во внутреннем try ?

B_>try
B_>{
B_> try
B_> {
B_> throw CMyError();
B_> }
B_> catch(CError* err)
B_> {
B_> throw CMyError();
B_> }
B_>}
B_>catch(CMyError* err)
B_>{
B_>}
B_>[/ccode]
Да, будет. Только подменять исключение — плохая практика. Лучше используй throw.
Re[3]: try - catch
От: Bell Россия  
Дата: 04.06.04 09:33
Оценка:
Здравствуйте, Bug_z, Вы писали:

B_>Здравствуйте, Bell, Вы писали:


B>>Что такое CMyError()? Вызов функции?

B>>Если CMyError все-таки не функция, а класс, то связан ли он с CError?

B>>ЗЫ

B>>Если CMyError — это класс, то ловиться ничего не будет — ты выбрасываешь объект класса CMyError, а ловишь указатель.

B_>CMyError — это класс, CError тоже класс. между собой никак не связаны.


Тогда ничего ловится не будет.
Если переписать так:
try 
{
   try
   {
      throw CMyError();
   }
   catch(CError* err)
   {
      throw CMyError();
   }
}
catch(const CMyError& err)
{
}


то внешний catch сработает.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.