diff options
Diffstat (limited to 'src/clojure/contrib/condition')
-rw-r--r-- | src/clojure/contrib/condition/Condition.clj | 43 | ||||
-rw-r--r-- | src/clojure/contrib/condition/example.clj | 66 |
2 files changed, 0 insertions, 109 deletions
diff --git a/src/clojure/contrib/condition/Condition.clj b/src/clojure/contrib/condition/Condition.clj deleted file mode 100644 index 18449653..00000000 --- a/src/clojure/contrib/condition/Condition.clj +++ /dev/null @@ -1,43 +0,0 @@ -;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and -;; distribution terms for this software are covered by the Eclipse Public -;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can -;; be found in the file epl-v10.html at the root of this distribution. By -;; using this software in any fashion, you are agreeing to be bound by the -;; terms of this license. You must not remove this notice, or any other, -;; from this software. -;; -;; Condition.clj -;; -;; Used by clojure.contrib.condition to implement a "Throwable map" -;; -;; scgilardi (gmail) -;; Created 09 June 2009 - -(ns clojure.contrib.condition.Condition - (:gen-class :extends Throwable - :implements [clojure.lang.IMeta] - :state state - :init init - :post-init post-init - :constructors {[clojure.lang.IPersistentMap] - [String Throwable]})) - -(defn -init - "Constructs a Condition object with condition (a map) as its - metadata. Also initializes the superclass with the values at :message - and :cause, if any, so they are also available via .getMessage and - .getCause." - [condition] - [[(:message condition) (:cause condition)] (atom condition)]) - -(defn -post-init - "Adds :stack-trace to the condition. Drops the bottom 3 frames because - they are always the same: implementation details of Condition and raise." - [this condition] - (swap! (.state this) assoc - :stack-trace (into-array (drop 3 (.getStackTrace this))))) - -(defn -meta - "Returns this object's metadata, the condition" - [this] - @(.state this)) diff --git a/src/clojure/contrib/condition/example.clj b/src/clojure/contrib/condition/example.clj deleted file mode 100644 index 5a7d72ef..00000000 --- a/src/clojure/contrib/condition/example.clj +++ /dev/null @@ -1,66 +0,0 @@ -;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and -;; distribution terms for this software are covered by the Eclipse Public -;; License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) which can -;; be found in the file epl-v10.html at the root of this distribution. By -;; using this software in any fashion, you are agreeing to be bound by the -;; terms of this license. You must not remove this notice, or any other, -;; from this software. -;; -;; clojure.contrib.condition.example.clj -;; -;; scgilardi (gmail) -;; Created 09 June 2009 - -(ns clojure.contrib.condition.example - (:use (clojure.contrib - [condition - :only (handler-case print-stack-trace raise *condition*)]))) - -(defn func [x y] - "Raises an exception if x is negative" - (when (neg? x) - (raise :type :illegal-argument :arg 'x :value x)) - (+ x y)) - -(defn main - [] - - ;; simple handler - - (handler-case :type - (println (func 3 4)) - (println (func -5 10)) - (handle :illegal-argument - (print-stack-trace *condition*)) - (println 3)) - - ;; multiple handlers - - (handler-case :type - (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 :type - (handler-case :type - nil - nil - (println 1) - (println 2) - (println 3) - (println (func 8 2)) - (println (func -6 17)) - ;; no handler for :illegal-argument - (handle :overflow - (println "nested") - (print-stack-trace *condition*))) - (println (func 3 4)) - (println (func -5 10)) - (handle :illegal-argument - (println "outer") - (print-stack-trace *condition*)))) |