fork(1) download
  1. #include <exception>
  2. #include <new>
  3. #include <iostream>
  4.  
  5. int main() {
  6. try {
  7. throw ::std::bad_alloc();
  8. } catch(::std::bad_alloc&) {
  9. ::std::cout << "::std::bad_alloc\n";
  10. } catch(::std::exception&) {
  11. ::std::cout << "::std::exception\n";
  12. }
  13.  
  14. ::std::cout << "\n";
  15.  
  16. try {
  17. try {
  18. throw ::std::bad_alloc();
  19. } catch(::std::exception& e) {
  20. ::std::cout << "rethrowing ::std::bad_alloc as ::std::exception...\n";
  21. throw e;
  22. }
  23. } catch(::std::bad_alloc&) {
  24. ::std::cout << "::std::bad_alloc\n";
  25. } catch(::std::exception&) {
  26. ::std::cout << "::std::exception\n";
  27. }
  28.  
  29. ::std::cout << "\n";
  30.  
  31. try {
  32. try {
  33. throw ::std::bad_alloc();
  34. } catch(...) {
  35. ::std::cout << "rethrowing ::std::bad_alloc correctly\n";
  36. throw;
  37. }
  38. } catch(::std::bad_alloc&) {
  39. ::std::cout << "::std::bad_alloc\n";
  40. } catch(::std::exception&) {
  41. ::std::cout << "::std::exception\n";
  42. }
  43. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
::std::bad_alloc

rethrowing ::std::bad_alloc as ::std::exception...
::std::exception

rethrowing ::std::bad_alloc correctly
::std::bad_alloc