• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

ООП. Try{}catch{}

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

midnight

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

Pasha

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

midnight

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

Pasha

<!--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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!