diff options
author | scgilardi <scgilardi@gmail.com> | 2009-06-11 21:28:08 +0000 |
---|---|---|
committer | scgilardi <scgilardi@gmail.com> | 2009-06-11 21:28:08 +0000 |
commit | 232398bb753703e0bed595326e5cf260e35a467d (patch) | |
tree | 060d198a459d22c30aa650175ddbc42bd84c0679 /src/clojure/contrib/condition/example.clj | |
parent | ed14fb1c4ff5829a7da61a09673006365f5db959 (diff) |
condition: work on print-stack-trace and examples
Diffstat (limited to 'src/clojure/contrib/condition/example.clj')
-rw-r--r-- | src/clojure/contrib/condition/example.clj | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/src/clojure/contrib/condition/example.clj b/src/clojure/contrib/condition/example.clj index 04ef7d67..36d7b36f 100644 --- a/src/clojure/contrib/condition/example.clj +++ b/src/clojure/contrib/condition/example.clj @@ -16,7 +16,7 @@ (defn func [x y] (if (neg? x) - (raise :source ::Args :arg 'x :value x :message "shouldn't be negative") + (raise :reason :illegal-argument :arg 'x :value x :message "cannot be negative") (+ x y))) (defn main @@ -24,25 +24,40 @@ ;; simple handler - (handler-case :source + (handler-case :reason (println (func 3 4)) (println (func -5 10)) - (handle ::Args - (printf "Bad argument: %s\n" *condition*))) + (handle :illegal-argument + (print-stack-trace *condition*)) + (println 3)) - ;; demonstrate nested handlers + ;; multiple handlers + + (handler-case :reason + (println (func 4 1)) + (println (func -3 22)) + (handle :overflow + (print-stack-trace *condition*)) + (handle :illegal-argument + (print-stack-trace *condition*))) + + ;; nested handlers - (handler-case :source - (handler-case :source + (handler-case :reason + (handler-case :reason nil nil + (println 1) + (println 2) + (println 3) (println (func 8 2)) (println (func -6 17)) - ;; no handler for ::Args - (handle ::nested - (printf "I'm nested: %s\n" *condition*))) + ;; no handler for :illegal-argument + (handle :overflow + (println "nested") + (print-stack-trace *condition*))) (println (func 3 4)) (println (func -5 10)) - (handle ::Args - (print-stack-trace *condition*) - (printf "Bad argument: %s\n" *condition*)))) + (handle :illegal-argument + (println "outer") + (print-stack-trace *condition*)))) |