içine bir şey atmaya çalışırsam sonlandırmaya neden olur. Aşağıdaki C++ kodum var ve bana bir sürpriz veriyor. Sorun şu ki, catch bloğu içinde yeniden fırlatma dışında bir şey atıyorsa, programın iptal edilmesi ve GCC4, "int" örneğini attıktan sonra çağrılan sonlandırmada hata iletisini vermesiyle sonlandırılacaktır. Sadece "atmak" kullanırsam catch bloğunun içine yeniden atmak için her şey iyi olacak.neden bir yakalama bloğu içinde C++
#include <iostream>
#include <exception>
#include <stdexcept>
using namespace std;
int main()
{
try{
throw std::string("first throw");
}
catch(std::string &x){
try{
std::cout << x << std::endl;
// throw; // if I use this line, all is fine.
throw int(2); // but if I use this line, it causes Abort() to be called
}
catch (int &k){
throw;
}
catch(...)
{
cout << "all handled here!"<< endl;
}
}
catch(...){
std::cout<< "never printed" << endl;
}
}
Bir mandaldan fırlatırsanız, bu beklenen bir şeydir. – AJG85