throw
sadece rethrow yakalandı istisna nesnesi için bir catch
ifadesi içinde kullanılmalıdır. Kodunuz, catch
ifadesinin dışında kullanmaya çalışır - bunun yerine, atmak için bir tür seçmeniz gerekir. Şüpheniz varsa, std::runtime_error
ile başlamak mantıksız değildir. Daha fazla seçenek için bkz. here. Kendi türlerinizi de atabilirsiniz, ancak bunları Standart kütüphane tarafından sağlanan türlerden birinden türetmek iyi bir fikirdir. Bu nedenle, müşteri kodunun yakalanması ve ele alınması yerine tüm mantıksal olarak benzer hatalar için uygun kullanımı belirleme şansı daha yüksektir. Onları ayrı ayrı ve her yeni olası hata için sürekli olarak güncellenir.
FWIW, Standart 15.1/9'unda söyler: istisna halen işlenen ise
, herhangi bir terimin bir taç ifade yürütme std::terminate()
çağırır.
Çok açık bir şekilde, "Ne fırlatılıyor ..." yanıtı, fırlatma yapılmaması ve bunun yerine std::terminate
çağrılmasıdır.
Bu doğru, ancak soruya cevap veriyor mu? Haklı olarak "bunu yapma" deyin, ama "ne yaparsam yaparım?" Sorusu değil. – hvd
@hvd: true ... tam metni bir araya getiriyordu .... –
Evet, bu iyi görünüyor. :) – hvd