I am well aware of the fact that one should not throw any exception in destructor.
But as a part of making my grip on this concept,I coded this example :-
#include <iostream>
class A {
private: 
    int i;
public:
    A()  { i = 10;   }
    ~A() { throw 30; }
};
int main(){
    try{
        A();
        throw 10;
    }
    catch (int i) {
        std::cout << i << std::endl;
        std::cout << "exception caught" << std::endl;
    }
}
As per my understanding, this program should be terminated by calling std::terminate() as there will be two exceptions at the same time. But, this program is giving the following output:-
30
exception caught
Can anyone please explain me the logic behind this as to why this is not terminating?
 
     
     
     
    