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 innerhalb von catch() erzeugt (und somit wie jeder andere
        Fehler abgefangen) und es werden keine Ausdruecke <expr> aus catch()
        ausgewertet. Der Modifikator 'reserve' kann verwendet werden,
        einen anderen Wert fuer die Reserve anzugeben.

        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.
            'reserve <expr>': <expr> muss eine ganzen Zahl groesser 0
                        ergeben, welche dann als Rechenreserve anstelle
                        von __CATCH_EVAL_COST__ verwendet wird. Das Minimum
                        ist 2 * __MASTER_EVAL_COST__ .

        catch() an sich ist nicht besonders laufzeit-intensiv: es braucht
        nur etwas mehr Zeit als ein Intra-Objekt-Funktionsaufruf.
        
        throw() ist ebenfalls nicht sehr teuer, da lediglich einige
        interne Strukturen aufgeraeumt werden muessen.

        Echte Laufzeitfehler (ob nun mit oder ohne catch()) sind hingegen
        sehr zeitintensiv.

        catch ist nicht im eigentlichen Sinne eine Efun, sondern eine Compiler
        Anweisung.


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.
        LDMud 3.3.559 verlegte den Test auf verbleibende Rechenticks in die
            vom catch() umschlossenen Ausfuehrung.
        LDMud 3.3.560 fuegte den Modifikator 'reserve' ein.

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