Ausnahmebehandlung - Parameter übergeben?



  • Hallo!

    Ich habe in C++ folgende Ausnahmebehandlung...

    int main(int argc, char **argv) try {
    
      //irgendwo im Programm:
      int number = 99;
      throw "parsing failed; stopped at" + number;
    
    }
    catch (out_of_range const& oor) {
    	cerr << argv[0] << ": " << oor.what() << endl;
    	return 1;
    }
    catch(???????) {
    
    }
    

    Das Zusammensetzen des String funktioniert aber nicht, also "parsing failed; stopped at" + number ! wie kann ich die Exception schreiben?



  • catch(char const *str)
    

    iirc. Aber es ist sinnvoller dafür eine eigene Exceptionklasse zu nutzen

    struct parsing_exception : std::runtime_error {
      parsing_exception(std::string const &str) : std::runtime_error(str) { }
    };
    
    int main() try {
      throw parsing_exception("foo");
    }
    catch(std::exception const &e) {
      std::cerr << "Error: " << e.what() << '\n';
    }
    

    dann kann man nämlich gezielter catchen.

    btw. achso "string"+int-Funktioniert so in C++ natürlich auch nicht!



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dax schrieb:

    Das Zusammensetzen des String funktioniert aber nicht, also "parsing failed; stopped at" + number ! wie kann ich die Exception schreiben?

    Du kannst keinen const char* zu einem int addieren. Schau mal in diesem Thread nach, dort habe ich eine Lösung gepostet.


Anmelden zum Antworten