SYNOPSIS
        mixed catch(expr, expr, ...)
        mixed catch(expr, expr, ...; modifiers)

BESCHREIBUNG
        Wertet die Ausdruecke <expr> aus. Wenn kein Fehler auftritt, wird 0
        zurueck geliefert. Wenn ein Fehler auftritt, wird die Ausfuehrung an
        diesem Punkt abgebrochen und ein String mit der Fehlermeldung wird
        zurueck gegeben.

        Systemeigene Fehlermeldungen beginnen mit einem "*", benutzerdefinierte
        Fehlermeldungen aus throw() und raise_error() (sofern von 0
        verschieden), werden unveraendert zurueck geliefert.

        Wenn zum Zeitpunkt, zu dem catch() aufgerufen wird, weniger als
        __CATCH_EVAL_COST__ Rechenticks uebrig sind, wird ein Laufzeitfehler
        (RTE) erzeugt und es werden keine Ausdruecke <expr> aus catch()
        ausgewertet.

        Das Verhalten von catch() kann durch <modifiers> veraendert werden:

            'nolog':    Normalerweise wird der Fehler im Fehlerlog
                        gespeichert, um die Fehlersuche zu erleichtern. Wird
                        'nolog' gesetzt, wird dieser Log-Eintrag unterdrueckt.
            'publish':  Normalerweise wird master::runtime_error() fuer einen
                        Fehler innerhalb eines catch() nicht aufgerufen. Mit
                        diesem <modifier> wird runtime_error() trotzdem
                        aufgerufen.

        Catch ist nicht im eigentlichen Sinne eine Efun, sondern eine
        Compileranweisung.

BEISPIELE
        object obj;
        string err;
        if (err = catch(obj = clone_object("/foo/bar/baz")))
            write("Kann das Objekt nicht clonen. Grund: "+err+"\n");

GESCHICHTE
        LDMud 3.2.9 fuehrte den 'nolog' catch() als experimentelles Feature
            ein.
        LDMud 3.2.10 implementierte 'nolog' als offizielle Form und fuehrte
            zudem 'publish' ein.

SIEHE AUCH
        throw(E), raise_error(E), predefined(D), runtime_error(M)
