Je vais avoir une discussion avec un collègue à propos de lever des exceptions de constructeurs, et de la pensée, je tiens quelques commentaires.
Est-il ok pour lancer des exceptions de constructeurs, de former une conception de point de vue?
Disons que je suis en l'enveloppant d'un mutex posix dans une classe, il ressemblerait à quelque chose comme ça.
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_;
};
Ma question est, est-ce la norme de moyen de le faire? parce que si le pthread mutex_init d'échec de l'appel de l'objet mutex est inutilisable donc lancer une exception s'assure que le mutex n'est pas créée.
Devrais-je plutôt créer un membre de la fonction init de la classe Mutex et appel pthread mutex_init dans qui permettrait le retour d'un booléen basé sur pthread mutex_init de retour? De cette façon, je n'ai pas à utiliser les exceptions pour un si faible niveau d'objet.