Kurucular gelen atma istisnalar
İm kurucular istisnalar atmak için co-işçi ile bir tartışma sahip ve bazı geribildirim istiyorum düşündüm.
Kurucular istisnalar atmak Tamam, bakış tasarım noktası mudur?
Diyelim ki bir sınıfta bir posıx zaman uyumu sarma değilim, bu gibi bir şey olurdu.
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_;
};
Benim sorum, bu standart yolu yapmak? eğer pthread mutex_init çağrı dışlama nesne kullanılamaz durumda başarısız olursa, çünkü çok atan bir durum, zaman uyumu oluşturulmuş olmayacak sağlar.
Fonksiyonu başlatma bool pthread dayalı dönecekti içinde mutex_init dönüş mutex_init bir üye oluşturmak tercih etmeliyim? Bu şekilde bu kadar düşük seviye bir nesne için özel durumlar kullanmak zorunda değilim.
CEVAP
Evet, başarısız yapıcı bir özel durum üretiliyor bunu yapmanın standart yoludur. Daha fazla bilgi için Handling a constructor that fails Bu SSS okuyun. Bir init() yöntemi de çalışır, ama zaman uyumu nesne oluşturur herkes init hatırlamak vardır () " olması gerekiyor. RAII ilkesine aykırı hissediyorum.
Kurucular Java istisnalar atabilir?...
Atma İstisnalar en iyi uygulamalar...
Ne kadar Değişken bir klon gelen çalış...
Django hızlı bir queryset gelen ilk ne...
Nasıl bir dize tüm önde gelen sıfırlar...