std::exception_ptr
içinde saklanan bir özel durum var. std::rethrow_exception
kullanarak istisnayı yeniden yapıyorum, catch(MyException&)
kullanarak erişiyorum ve sonra değeri değiştiriyorum.Bir std :: exception_ptr içindeki bir istisnanın değerini değiştirebilir miyim?
Aynı istisnayı tekrar atarsam, yaptığım değişikliklere uymalı mıyım?
#include <exception>
#include <iostream>
struct MyException {
int value;
};
int main() {
std::exception_ptr a = std::make_exception_ptr(MyException());
try {
std::rethrow_exception(a);
} catch(MyException& b) {
std::cout << b.value << std::endl;
b.value = 3;
}
try {
std::rethrow_exception(a);
} catch(MyException& b) {
std::cout << b.value << std::endl;
}
}
Değişikliği gözlemleyerek ne demek istiyorsunuz? – perencia
@perencia Aynı istisnayı yeniden kullanırsam, yaptığım değişiklikler olurdu. Benim kod örneğimde, ikinci atayım 'a'' 3'''' '' '' '' '' dır. –
Örnekte, her zaman aynı nesneyi kullanarak, referans alarak yakalayın. – perencia