Какова цель функционального блока try? [Дубликат]
Возможный дубликат:
Когда полезна функция try block?
Разница между синтаксисом try-catch для функции
Этот код бросаетint
исключение при построенииDog
объект внутри классаUseResources
,int
исключение поймано нормальнымtry-catch
блок и код выходов:
Cat()
Dog()
~Cat()
Inside handler
#include <iostream>
using namespace std;
class Cat
{
public:
Cat() { cout << "Cat()" << endl; }
~Cat() { cout << "~Cat()" << endl; }
};
class Dog
{
public:
Dog() { cout << "Dog()" << endl; throw 1; }
~Dog() { cout << "~Dog()" << endl; }
};
class UseResources
{
class Cat cat;
class Dog dog;
public:
UseResources() : cat(), dog() { cout << "UseResources()" << endl; }
~UseResources() { cout << "~UseResources()" << endl; }
};
int main()
{
try
{
UseResources ur;
}
catch( int )
{
cout << "Inside handler" << endl;
}
}
Теперь, если мы заменим определениеUseResources()
конструктор, с тем, который используетfunction try block
как показано ниже,
UseResources() try : cat(), dog() { cout << "UseResources()" << endl; } catch(int) {}
выход такой же
Cat()
Dog()
~Cat()
Inside handler
т.е. с точно таким же конечным результатом.
Какова же тогда цельfunction try block
?