Сообщение Re[10]: Похоже, починил. от 21.12.2018 8:44
Изменено 21.12.2018 8:46 rg45
Re[10]: Похоже, починил.
Здравствуйте, Sheridan, Вы писали:
S>Почему исключение нельзя перехватить в конструкторе? Почему ты придумываешь мне редкие аварии?
Можно. Но!
1. Что ты будешь с этим исключением делать? Как ты определишь, какой из объектов кинул исключение? Они ведь неразличимы.
2. Эту проблему нужно будет решать в КАЖДОМ классе, содережащем более одного указателя.
3. Откуда у тебя уверенность, что это "авария" и что она редкая.
И главное: зачем создавать сложности, когда все эти "но" разрешаются предельно просто:
class cobject
{
public:
cobject()
: p1(new vertexbuf())
, p2(new vertexbuf()) // <--- Вот здесь летит исключение, объект p1 подвис навеки.
{
}
virtual ~cobject()
{
delete p1;
delete p2;
}
private:
vertexbuf* p1;
vertexbuf* p2;
};
S>Почему исключение нельзя перехватить в конструкторе? Почему ты придумываешь мне редкие аварии?
Можно. Но!
1. Что ты будешь с этим исключением делать? Как ты определишь, какой из объектов кинул исключение? Они ведь неразличимы.
2. Эту проблему нужно будет решать в КАЖДОМ классе, содережащем более одного указателя.
3. Откуда у тебя уверенность, что это "авария" и что она редкая.
И главное: зачем создавать сложности, когда все эти "но" разрешаются предельно просто:
class cobject
{
public:
cobject()
: p1(new vertexbuf())
, p2(new vertexbuf()) // <--- Вот здесь летит исключение - а нам насрать!
{
}
virtual ~cobject(){}
private:
shared_ptr<vertexbuf> p1;
shared_ptr<vertexbuf> p2;
};
Re[10]: Похоже, починил.
Здравствуйте, Sheridan, Вы писали:
S>Почему исключение нельзя перехватить в конструкторе? Почему ты придумываешь мне редкие аварии?
Можно. Но!
1. Что ты будешь с этим исключением делать? Как ты определишь, какой из объектов кинул исключение? Они ведь неразличимы.
2. Эту проблему нужно будет решать в КАЖДОМ классе, содережащем более одного указателя. Представь, во что превратится твой код и какое количество ошибок будет плодиться в этом аду.
3. Откуда у тебя уверенность, что это "авария" и что она редкая. А даже если и редкая, то что — можно игнорировать что ли?
И главное: зачем создавать сложности, когда все эти "но" разрешаются предельно просто:
class cobject
{
public:
cobject()
: p1(new vertexbuf())
, p2(new vertexbuf()) // <--- Вот здесь летит исключение, объект p1 подвис навеки.
{
}
virtual ~cobject()
{
delete p1;
delete p2;
}
private:
vertexbuf* p1;
vertexbuf* p2;
};
S>Почему исключение нельзя перехватить в конструкторе? Почему ты придумываешь мне редкие аварии?
Можно. Но!
1. Что ты будешь с этим исключением делать? Как ты определишь, какой из объектов кинул исключение? Они ведь неразличимы.
2. Эту проблему нужно будет решать в КАЖДОМ классе, содережащем более одного указателя. Представь, во что превратится твой код и какое количество ошибок будет плодиться в этом аду.
3. Откуда у тебя уверенность, что это "авария" и что она редкая. А даже если и редкая, то что — можно игнорировать что ли?
И главное: зачем создавать сложности, когда все эти "но" разрешаются предельно просто:
class cobject
{
public:
cobject()
: p1(new vertexbuf())
, p2(new vertexbuf()) // <--- Вот здесь летит исключение - а нам насрать!
{
}
virtual ~cobject(){}
private:
shared_ptr<vertexbuf> p1;
shared_ptr<vertexbuf> p2;
};