; Error handling example. (define-condition some-error (error) ((what :initarg :what :initform "something" :reader what)) (:report (lambda (condition stream) (format stream "Agh! ~@(~A~) error." (what condition)))) (:documentation "Some-error condition.")) (defun ignore-some-error1 () " Restart function " (print "some error 1") T) (defun function-with-error () " Test function which generate an error. Called directly this will start the debugger/repl. " (restart-case (error 'some-error :what "test") (use-value (value) value) ; first restart function (ignore-some-error1 () (ignore-some-error1)))) ; second restart function (defun higher-function () " This funtion calls a function which contains an error, but invokes the desired restart. Other higher-functions could select different restart or none at all, so the behaviour of the function-with-error under error conditions is controlled on the higher-functions level. " (handler-bind ((some-error #'(lambda (c) (invoke-restart 'ignore-some-error1)))) (function-with-error )))
Thought about development and more. My interest is mainly in Python, Ruby and Lisp development, web and AI.
Friday, August 10, 2012
Common Lisp error handling example
Labels:
error handling,
example,
lisp
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment