생성자 예외를 잡는 방법을 이해하지 못하는 것 같습니다. 다음은 관련 코드입니다 :C++ catch 생성자 예외
struct Thread {
rysq::cuda::Fock fock_;
template<class iterator>
Thread(const rysq::cuda::Centers ¢ers,
const iterator (&blocks)[4])
: fock_()
{
if (!fock_) throw;
}
};
Thread *ct;
try { ct = new Thread(centers_, blocks); }
catch(...) { return false; } // catch never happens,
그래서 catch 문이 실행되지 않고 나는 예외가 처리되지 않은 얻을. 내가 뭘 잘못 했니? 이것은 g ++를 사용하는 똑 바른 C++입니다.
'! fock_' *이 실제로'true'로 평가 될 수 있는지 확인 했습니까? 어쩌면 당신은 단순히 처음부터 예외를 던지지 않았을 것입니다 ... – stakx
@stakx 예외가 throw되지만 catch되지 않습니다. 나는 명시 적 예외를 던져야한다는 것을 몰랐다. – Anycorn