ООП. Try{}catch{}

  • Автор темы midnight
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

midnight

Гость
#1
Привет, нам препод по ООП задал вопрос, подскажите, пожалуйста, ответ.
Код:
try{/*...*/}
catch(exception)
{
/*...*/
try{/*...*/} 
catch(exception)
{/*...*/}
}
Почему без внутреннего catch не будет работать? Причем в обоих catch исключения одинаковые!
Буду оч признательна!
 
P

Pasha

Гость
#2
Для: midnight
Идея конструкции примерна такая:
try { если здесь произойдет исключение } catch (вот такого вот типа ) { то выполнить следующий код }
Т.е. эксепшены ловятся только в блоке try. Если бы они ловились еще и в catch, то нельзя было бы перебросить пойманный эксепшн.
 
M

midnight

Гость
#3
Прошу прощения. Немного другой вопрос.
Код:
try
{
}
catch(Exception &exception)
{
}
catch(...)
{
try
{
}
catch(Exception &exception)
{
}
}
вопрос слд, почему исключение &exception может возникать в catch(...) , если мы уже проверили его наличие?
Заранее спасибо)
 
P

Pasha

Гость
#5
<!--QuoteBegin-midnight+20:01:2008, 17:43 -->
<span class="vbquote">(midnight @ 20:01:2008, 17:43 )</span><!--QuoteEBegin-->вопрос слд, почему исключение &exception может возникать в catch(...) , если мы уже проверили его наличие?
[snapback]94292" rel="nofollow" target="_blank[/snapback]​
[/quote]Потому что "наличие", если его можно так назвать, проверяется только в пределах блока try {...}. Если бы catch тоже "ловил" исключения внутри себя, то:
1. Нельзя было бы перебросить пойманное исключение еще выше.
2. Любое исключение типа Exception в блоке catch приводило бы к бесконечному циклу.
 
M

midnight

Гость
#6
это опять не весь/правельный код ... :)
Почему не правильный код? Если создать простую форму в Builder 6, в Project1.cpp как такой код будет.

Потому что "наличие", если его можно так назвать, проверяется только в пределах блока try {...}. Если бы catch тоже "ловил" исключения внутри себя, то:
1. Нельзя было бы перебросить пойманное исключение еще выше.
2. Любое исключение типа Exception в блоке catch приводило бы к бесконечному циклу.
Спасибо большое!!!!
 
Статус
Закрыто для дальнейших ответов.