Standart, referans olarak yakalanan bir istisna ve onu değiştirme girişimlerine ne olacağı hakkında söyleyecek bir şey var mı?Referans ile bir istisna yakalarsanız, onu değiştirebilir ve yeniden düzenleyebilir misiniz?
Aşağıdaki kodu düşünün:
class my_exception: public std::logic_error
{
public:
std::vector<std::string> callstack;
};
void MyFunc()
{
try
{
SomethingThatThrows();
}
catch (my_exception & e)
{
e.callstack.push_back("MyFunc");
throw;
}
}
Bu zoraki bir örnektir, ben aslında böyle bir şey denemeden değilim. Başka bir iş parçacığındaki öneriye dayanarak ne olacağını merak ettim, istisnalar const referansı ile yakalanmalı.
boost :: istisna bunun için bazı düzgün araçlara sahiptir. –
push_back atabilir. Dize kurucu kopyalayabilir. Bugün std :: array what_msg istisnasını tercih ederim. Böylece sanal olanı kolayca uygulayabilirsiniz. –
Muxecoid