尝试在Clojure中退出debug-repl时出现异常

时间:2014-01-09 11:28:25

标签: clojure

我正在使用调试代理https://github.com/GeorgeJahad/debug-repl

当我尝试退出调试repl时,我遇到了错误

dr-1-1001 =>(quit-dr)
;;=> Exception$Enumeration$f482e887    vendors.debug_repl.proxy$java.lang.Exception$Enumeration$f482e887.fillInStackTrace (:-1)

也许这个小堆栈跟踪可以帮助

dr-1-1001 => (.printStackTrace *e)

;;=> vendors.debug_repl.proxy$java.lang.Exception$Enumeration$f482e887
at vendors.debug_repl.proxy$java.lang.Exception$Enumeration$f482e887.fillInStackTrace(Unknown Source)
at java.lang.Throwable.(Throwable.java:181) 
at java.lang.Exception.(Exception.java:29)
at vendors.debug_repl.proxy$java.lang.Exception$Enumeration$f482e887.(Unknown Source)
at vendors.debug_repl$fn__16719.invoke(debug_repl.clj:86)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3509)
at clojure.lang.Compiler$DefExpr.eval(Compiler.java:417)
at clojure.lang.Compiler.eval(Compiler.java:6647)
at clojure.lang.Compiler.load(Compiler.java:7069)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.loadResourceScript(RT.java:361)
at clojure.lang.RT.load(RT.java:440)
at clojure.lang.RT.load(RT.java:411)
at clojure.core$load$fn__5027.invoke(core.clj:5561)
at clojure.core$load.doInvoke(core.clj:5560)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5366)
at clojure.core$load_lib$fn__4976.invoke(core.clj:5406)
at clojure.core$load_lib.doInvoke(core.clj:5405)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:619)
at clojure.core$load_libs.doInvoke(core.clj:5444)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:621)
at clojure.core$use.doInvoke(core.clj:5538)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at utils.utils$eval16693.invoke(form-init1922168186769041658.clj:12)
at clojure.lang.Compiler.eval(Compiler.java:6642)
at clojure.lang.Compiler.eval(Compiler.java:6605)
at clojure.core$eval.invoke(core.clj:2883)
at clojure.main$repl$read_eval_print__6581$fn__6584.invoke(main.clj:239)
at clojure.main$repl$read_eval_print__6581.invoke(main.clj:239)
at clojure.main$repl$fn__6590.invoke(main.clj:257)
at clojure.main$repl.doInvoke(main.clj:257)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.main$repl_opt.invoke(main.clj:323)
at clojure.main$main.doInvoke(main.clj:421)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.Var.applyTo(Var.java:708)
at clojure.main.main(main.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
at clojure.lang.Reflector.invokeStaticMethod(Reflector.java:207)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
at clojure.lang.Reflector.invokeStaticMethod(Reflector.java:207)
at user$eval1015.invoke(form-init1922168186769041658.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6642)
at clojure.lang.Compiler.eval(Compiler.java:6632)
at clojure.lang.Compiler.load(Compiler.java:7069)
at clojure.lang.Compiler.loadFile(Compiler.java:7025)
at clojure.main$load_script.invoke(main.clj:274)
at clojure.main$init_opt.invoke(main.clj:279)
at clojure.main$initialize.invoke(main.clj:307)
at clojure.main$null_opt.invoke(main.clj:342)
at clojure.main$main.doInvoke(main.clj:420)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:391)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:708)
at clojure.main.main(main.java:37)
nil

1 个答案:

答案 0 :(得分:2)

您所看到的行为是预期的,因为quit-dr函数throw在调用时是异常。这是从here获取quit-dr的来源。

(defn quit-dr [ & form]
  (reset! element (first form))
  (throw quit-dr-exception))

根据README显示的内容,您应该通过评估空列表()来退出debug-repl。