Бросание исключений из конструкторов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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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