2 Stimmen

Ausnahmebehandlung im MIT-Schema

Wie kann ich eine Ausnahme im MIT-Schema auslösen und behandeln?

Etwas wie [es funktioniert nicht]

((< val 0) (raise "-ve value") )

3voto

dvingo Punkte 73

In der Dokumentation finden Sie zwar die Antwort, aber keine Codebeispiele, daher hier eines:

(define (handler x)
    (display "Handling Error: ")(display x)(newline)
    (restart 1))

Hier zeigen wir nur den Fehler an (in der Dokumentation als "Bedingung" bezeichnet) und tun nichts.

Diese Funktion soll alle Bedingungen behandeln:

(bind-default-condition-handler '() handler)

Oder Sie können einfach einen Codeblock mit einpacken:

(bind-condition-handler '() handler (3 4))

1voto

user1526533 Punkte 431

Wie dvingo darauf hinwies, zeigen die Dokumente kein Beispiel, daher hier ein weiteres Beispiel, das die eingebaute Sonderform "error" verwendet (zumindest in MIT-scheme):

(define (errors-if-zero x)
  (if (= x 0)
    (error "x is 0")
    x))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X