Бросание исключений из конструкторовC++

Программы на C++. Форум разработчиков
Anonymous
Бросание исключений из конструкторов

Сообщение Anonymous »

У меня есть дискуссия с коллегой об исключении исключений из конструкторов, и я думаю, что мне нужна некоторая обратная связь. />

Код: Выделить всё

class Mutex {
public:
Mutex() {
if (pthread_mutex_init(&mutex_, 0) != 0) {
throw MutexInitException();
}
}

~Mutex() {
pthread_mutex_destroy(&mutex_);
}

void lock() {
if (pthread_mutex_lock(&mutex_) != 0) {
throw MutexLockException();
}
}

void unlock() {
if (pthread_mutex_unlock(&mutex_) != 0) {
throw MutexUnlockException();
}
}

private:
pthread_mutex_t mutex_;
};
< /code>

Мой вопрос: это стандартный способ сделать это? Потому что, если вызов pthread mutex_init 
вызов не сбои, объект Mutex не используется, поэтому выбрасывание исключения гарантирует, что Mutex не будет создан. Таким образом, мне не нужно использовать исключения для такого объекта низкого уровня.

Подробнее здесь: https://stackoverflow.com/questions/810 ... nstructors

Вернуться в «C++»