[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
non-local exits with signal and condition-case
From: |
Nic Ferrier |
Subject: |
non-local exits with signal and condition-case |
Date: |
Sun, 02 Jun 2013 17:24:47 +0100 |
Is it just me or is catch annoying for some non-local exits?
When I do non-local exits, which isn't often, I mostly want to
non-locally exit and pass some data back.
Maybe this is the fault of my exposure to Java programming and using
exceptions for flow control? Anyway. I find that catch rarely fulfils my
needs.
It's possible to use signal and condition-case to achieve the effect
that I most often want and I do use them.
But making new signals is slightly annoying because you need to add 2
different properties to a symbol.
I propose a simple macro to make this easier:
(defmacro defsignal (err-symbol inherits-list message)
(let ((errv (make-symbol "err-v")))
`(let ((,errv ,err-symbol))
(put ,errv
'error-conditions
(quote ,inherits-list))
(put ,errv
'error-message
,message))))
One uses it like this:
(defsignal :nictest-blah (:nictest :nictest-blah) "blah!")
I'm not sure where to put this. I could package it. But I'm collecting a
list of these things (noflet, let-while, etc...) and gradually it seems
I'm inventing my own lisp.
This one though seems to be a genuine gap in elisp.
Is there any interest in core-ing it?
Nic
- non-local exits with signal and condition-case,
Nic Ferrier <=