C++ Exceptions - Is throwing c-string as an exception bad?

前端 未结 7 2166
花落未央
花落未央 2020-12-09 15:17

I am working on a small c++ program and learning exceptions. Is the following code \"bad\", and if so, what can I do to improve it?

try {
    // code
    if          


        
相关标签:
7条回答
  • 2020-12-09 15:46

    It is much better to throw a standard exception object. In general, the best practice is to throw something derived from std::exception so that if in some situation it does cause your program to terminate, the implementation has a better chance of printing a useful diagnostic.

    Because it isn't hard to do this, I would never recommend throwing a raw string literal.

    #include <stdexcept>
    
    void someFunction()
    {
        try {
            // code
            if (some error) {
                throw std::runtime_error( "Description of error." );
            }
        }
        catch (const std::exception& ex) {
            std::cerr << ex.what() << "\nFatal error" << std::endl;
        }
    }
    
    0 讨论(0)
提交回复
热议问题