Exception not caught in try catch block

前端 未结 5 952
太阳男子
太阳男子 2021-01-13 13:20

I do a simple throw \"TEST THROW\" and it isn\'t caught in my catch (std::exception& e). Is it because I\'m catching an std::exception& e?

5条回答
  •  清歌不尽
    2021-01-13 13:53

    Another reason people may hit this issue, especially if they've been writing Java recently, is that they may be throwing a pointer to the exception.

    /* WARNING WARNING THIS CODE IS WRONG DO NOT COPY */
    try {
        throw new std::runtime_error("catch me");
    } catch (std::runtime_error &err) {
        std::cerr << "exception caught and ignored: " << err.what() << std::end;
    }
    /* WARNING WARNING THIS CODE IS WRONG DO NOT COPY */
    

    will not catch the std::runtime_error* you threw. It'll probably die with a call to std::terminate for the uncaught exception.

    Don't allocate the exception with new, just throw the constructor by-value, e.g.

    try {
        /* note: no 'new' here */
        throw std::runtime_error("catch me");
    } catch (std::runtime_error &err) {
        std::cerr << "exception caught and ignored: " << err.what() << std::end;
    }
    

提交回复
热议问题