Tag: 抛出

抛出构造函数的exception

我正在和同事讨论有关从构造函数中抛出exception的问题,我想我想得到一些反馈。 从devise的angular度来看,从构造函数中抛出exception是可以的? 假设我在课堂上包装了一个posix互斥体,它看起来像这样: 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_; }; 我的问题是,这是做这件事的标准方法吗? 因为如果pthread mutex_init调用失败,互斥对象不可用,所以抛出exception可确保不会创build互斥锁。 我应该为Mutex类创build一个成员函数init,然后调用pthread […]

exception处理:抛出,抛出和Throwable

你们能解释throw , throws和Throwable之间的区别和什么时候使用哪一个?

在C ++中通过指针捕获exception

我发现有三种方法可以发现exception,有什么区别? 1)抓住价值; 2)参照; 3)抓住指针; 我只知道,通过值捕获将调用对象的两个副本,引用通过将调用一个。 那么如何通过指针捕捉? 何时使用指针捕获? 除了抛出一个对象之外,我可以抛出一个像这样的对象的指针吗? class A {} void f() { A *p = new A(); throw p; }