Umgang mit falschen Aufrufparametern bei Command-Line-Tools

  • Hallo,

    die von euch, die Sysprog schon gemacht haben wissen sicher, wie es in der Unix-Welt Brauch ist, bei einem Command-Line-Tool mit falschen Aufrufparametern und Optionen umzugehen. Da wird im Wesentlichen eine usage-Meldung ausgegeben und das Programm terminiert.

    z.B.:

    Code
    void usage(const char* command_name)
    {
        fprintf(stderr, "Usage: %s -u user -f foo [-b bar] [-v].\n", command_name);
        exit(1);
    }


    oder sowas. Die wird aufgerufen, wenn z.B. mit über getopt() festgestellt wurde, dass eine mandatory Option fehlt, oder dass eine zuviel angegeben wurde.

    Jetzt wüsst ich gern, wie es in C++ gängige Praxis ist, mit sowas umzugehen? Bin selbst ziemlicher Newbie in C++, darum ist das vielleicht eine dumme Frage. Gibt es für sowas spezielle Arten von Exceptions, die sich dafür eignen, verwendet man normale Exceptions und schreibt da immer rein, wie das Programm aufgerufen zu werden hat (klingt zaach und unflexibel), oder wie geht man das an? Gibts dafür Richtlinien, oder kennt jemand ein Unix Command-Line-Tool, das in C++ geschrieben ist, dessen Source ich abklappern könnte? :)

    TIA!

    Restrain the specimen!

  • Ich bin kein C++-Philosoph, aber soweit ich das verstanden habe, verwendet man Exceptions in C++ wirklich nur für Ausnahmen. Anders als in Java, wo man "normale" Fehlerbehandlung über Exceptions macht, werden sie in C++ also echt nur für Sachen benutzt, die normalerweise nicht auftreten und also nicht erwartet werden.
    Daß ein User falsche Parameter angibt, ist zu erwarten, also nimmt man da ein normales if, keine Exception. Macht den Code sowohl kürzer als auch leichter verständlich.

    *plantsch*

  • Ich verwende in C++ fast nie Exceptions.. sind viel langsamer als einfache Abfragen. In Java wirds oft gemacht, weil dort sowieso alles langsam ist =)

    640K ought to be enough for anybody. :eek2:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!