Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
antik
gsll
Commits
9969bdf7
Commit
9969bdf7
authored
Jun 02, 2015
by
Liam M. Healy
Browse files
New macro #'return-value-on-error
parent
95db48a3
Changes
1
Hide whitespace changes
Inline
Side-by-side
init/conditions.lisp
View file @
9969bdf7
;; GSL errors
;; Liam Healy Sat Mar 4 2006 - 18:33
;; Time-stamp: <201
0
-0
7-20 17:55:56
EDT conditions.lisp>
;; Time-stamp: <201
5
-0
6-02 17:38:15
EDT conditions.lisp>
;;
;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
;; Copyright 2006, 2007, 2008, 2009
, 2010, 2015
Liam M. Healy
;; Distributed under the terms of the GNU General Public License
;;
;; This program is free software: you can redistribute it and/or modify
...
...
@@ -182,3 +182,16 @@
;;; This insures that conditions will be signalled if GSLL is dumped
;;; in save-lisp-and-die.
#+
sbcl
(
push
'establish-handler
sb-ext:*init-hooks*
)
;;; Convenience macro so user can specify a value to return for a particular error.
(
export
'return-value-on-error
)
(
defmacro
return-value-on-error
(
values
error
&body
body
)
"Return the value(s) (a value or list of values) in case the specified GSL error is signalled in the body."
`
(
restart-case
(
handler-bind
((
,
error
#'
(
lambda
(
condition
)
(
declare
(
ignore
condition
))
(
invoke-restart
'return
,@
(
alexandria:ensure-list
values
)))))
,@
body
)
(
return
(
&rest
v
)
(
apply
'values
v
))))
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment