अंतिम अपवाद फेंक दिया गया *e
var में उपलब्ध है। आप अपवाद पर .printStackTrace
पर कॉल करके एक स्टैक ट्रेस प्रिंट कर सकते हैं। यदि आपकी अपवाद फ़ाइल में स्रोत कोड द्वारा फेंक दिया गया है, या NO_SOURCE_FILE यदि यह आरईपीएल से है, तो नीचे दिए गए मेरे उदाहरणों में यह लाइन नंबर प्रिंट करेगा।
Clojure 1.2.0
user=> (throw (Exception. "FOO"))
java.lang.Exception: FOO (NO_SOURCE_FILE:0)
user=> *e
#<CompilerException java.lang.Exception: FOO (NO_SOURCE_FILE:0)>
user=> (.printStackTrace *e)
java.lang.Exception: FOO (NO_SOURCE_FILE:0)
at clojure.lang.Compiler.eval(Compiler.java:5440)
at clojure.lang.Compiler.eval(Compiler.java:5391)
at clojure.core$eval.invoke(core.clj:2382)
at clojure.main$repl$read_eval_print__5624.invoke(main.clj:183)
at clojure.main$repl$fn__5629.invoke(main.clj:204)
at clojure.main$repl.doInvoke(main.clj:204)
at clojure.lang.RestFn.invoke(RestFn.java:422)
at clojure.main$repl_opt.invoke(main.clj:262)
at clojure.main$main.doInvoke(main.clj:355)
at clojure.lang.RestFn.invoke(RestFn.java:398)
at clojure.lang.Var.invoke(Var.java:361)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: FOO
at user$eval1.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
... 13 more
nil
Clojure 1.3 (अल्फा) में एक समारोह pst
वही चीज़ बुलाया नहीं है। ये ढेर निशान थोड़े अच्छे हैं क्योंकि कुछ बाहरी रेखाएं हटा दी जाती हैं।
Clojure 1.3.0-master-SNAPSHOT
user=> (throw (Exception. "FOO"))
Exception FOO user/eval1 (NO_SOURCE_FILE:1)
user=> (pst)
Exception FOO
user/eval1 (NO_SOURCE_FILE:1)
clojure.lang.Compiler.eval (Compiler.java:5998)
clojure.lang.Compiler.eval (Compiler.java:5965)
clojure.core/eval (core.clj:2652)
clojure.core/eval (core.clj:-1)
clojure.main/repl/read-eval-print--5575 (main.clj:178)
clojure.main/repl/fn--5580 (main.clj:199)
clojure.main/repl (main.clj:199)
clojure.main/repl-opt (main.clj:257)
clojure.main/main (main.clj:350)
clojure.lang.Var.invoke (Var.java:361)
clojure.lang.Var.applyTo (Var.java:482)
nil
कुछ आईडीई (जैसे Emacs के लिए SLIME) स्वचालित रूप से आपके लिए स्टैक ट्रेस पॉप अप करेंगे। clojure.stacktrace और clj-stacktrace जैसे स्टैकट्रैक्स को प्रदर्शित करने और छेड़छाड़ करने के लिए कुछ पुस्तकालय भी हैं।
स्टैक ट्रेस हैंडलिंग क्लोजर का एक पहलू प्रतीत होता है जिसे अभी भी परिष्कृत किया जा रहा है।
स्रोत
2010-10-31 21:17:48
पूरी तरह से काम करता है! :) – pauldoo
* ई के अलावा पिछले अपवादों तक पहुंचने का कोई तरीका है? – mascip