aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/condition/example.clj
diff options
context:
space:
mode:
authorscgilardi <scgilardi@gmail.com>2009-06-11 21:28:08 +0000
committerscgilardi <scgilardi@gmail.com>2009-06-11 21:28:08 +0000
commit232398bb753703e0bed595326e5cf260e35a467d (patch)
tree060d198a459d22c30aa650175ddbc42bd84c0679 /src/clojure/contrib/condition/example.clj
parented14fb1c4ff5829a7da61a09673006365f5db959 (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.clj41
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*))))