Hi!
Ich werde hier leider gerade aus der vorhandenen Dokumentation nicht schlau, was aber wohl an meiner geringen Erfahrung mit elisp zusammenhängt. Ich habe irgendwo bei www.dotemacs.de gelesen, dass man mit condition-case eine Art try/catch basteln kann. Ja, das funktioniert auch:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
(condition-case err
(progn
(message "Hallo")
(undefined-function-call))
(error err))
</font><hr></pre></blockquote>
Ja, der Aufruf der nicht existierenden Funktion wird dabei aufgefangen, nur wie kann ich selbst einen bestimmten Fehler auslösen, den ich mit entsprechendem Code auffangen kann? Irgendwie mit signal offenbar, aber ich weiß nicht, wie das gehen soll.
Cheers,
GNU/Wolfgang
elisp: try/catch und throw a.k.a. condition-case und signal?
elisp: try/catch und throw a.k.a. condition-case und signal?
Last edited by bakunin on 10. Feb 2002 20:29, edited 1 time in total.
Re: elisp: try/catch und throw a.k.a. condition-case und signal?
Hi!
Ok, nicht durch Nachdenken, sondern durch Rumprobieren habe ich eine Lösung gefunden:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
(progn
(condition-case err
(progn
(message "Hello")
(signal 'error '(Foo bar))
(goto-char (point-min))) ;; Not reached
(error (message "%s" (cdr err))))
(sleep-for 2)
(beginning-of-line))
</font><hr></pre></blockquote>
Cheers,
GNU/Wolfgang
Ok, nicht durch Nachdenken, sondern durch Rumprobieren habe ich eine Lösung gefunden:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
(progn
(condition-case err
(progn
(message "Hello")
(signal 'error '(Foo bar))
(goto-char (point-min))) ;; Not reached
(error (message "%s" (cdr err))))
(sleep-for 2)
(beginning-of-line))
</font><hr></pre></blockquote>
Cheers,
GNU/Wolfgang