C ++ 'da, bir işlevin bir istisna belirticisi kullanarak bir istisna atıp atamayacağını belirtebilirsiniz. Örneğin:
void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type
Aşağıdakilerden dolayı bunları gerçekten kullanmak konusunda şüpheliyim:
- Derleyici, istisna belirleyicileri herhangi bir titiz şekilde gerçekten zorlamaz, bu nedenle faydalar büyük değildir. İdeal olarak, bir derleme hatası almak istersiniz.
- Bir işlev bir istisna tanımlayıcısını ihlal ederse, standart davranışın programı sonlandırmak olduğunu düşünüyorum.
- VS.Net'te, throw (X) 'i fırlatma (...) olarak ele alır, bu nedenle standarda bağlılık güçlü değildir.
İstisna tanımlayıcıların kullanılması gerektiğini düşünüyor musunuz?
Lütfen "evet" veya "hayır" olarak yanıtlayın ve cevabınızı gerekçelendirmek için bazı nedenler belirtin.