129 |
(handler-case ,form |
(handler-case ,form |
130 |
(undefined-function () 'undefined-function) |
(undefined-function () 'undefined-function) |
131 |
(program-error () 'program-error) |
(program-error () 'program-error) |
132 |
|
(package-error () 'package-error) |
133 |
(type-error () 'type-error) |
(type-error () 'type-error) |
134 |
(control-error () 'control-error) |
(control-error () 'control-error) |
135 |
))) |
))) |
271 |
when c collect c) |
when c collect c) |
272 |
'string)) |
'string)) |
273 |
(defparameter +rev-code-chars+ (reverse +code-chars+)) |
(defparameter +rev-code-chars+ (reverse +code-chars+)) |
274 |
|
|
275 |
|
;;; Used in checking for continuable errors |
276 |
|
|
277 |
|
(defun has-non-abort-restart (c) |
278 |
|
(throw 'handled |
279 |
|
(if (position 'abort (compute-restarts c) |
280 |
|
:key #'restart-name :test-not #'eq) |
281 |
|
'success |
282 |
|
'fail))) |
283 |
|
|
284 |
|
(defmacro handle-non-abort-restart (&body body) |
285 |
|
`(catch 'handled |
286 |
|
(handler-bind ((error #'has-non-abort-restart)) |
287 |
|
,@body))) |
288 |
|
|