JonyEpsilon / gorilla-repl

A rich REPL for Clojure in the notebook style.
http://gorilla-repl.org
MIT License
888 stars 104 forks source link

Complex exception is not shown at all in gorilla repl #182

Open behrica opened 9 years ago

behrica commented 9 years ago

I noticed a case where a complex exception is not shown in the Gorilla Repl, it just renders a red empty box in the output.

The real stacktrace is this,(copied from Emacs Cider repl:)


  Show: Clojure Java REPL Tooling Duplicates All  (0 frames hidden)

1. Unhandled clojure.lang.ExceptionInfo
   Unfreezable type: class
   eu.europa.efsa.classifydoi.SynonymTokenizerFactory
   eu.europa.efsa.classifydoi.SynonymTokenizerFactory base factory=
   com.aliasi.tokenizer.TokenNGramTokenizerFactory min ngram=1 max
   ngram=3 base factory= com.aliasi.tokenizer.StopTokenizerFactory stop
   set=[", safeti, ', parma, (, ), /,, ., /, ,, i, -, author, european,
   food, efsa, ;, :] base factory= class
   com.aliasi.tokenizer.PorterStemmerTokenizerFactory base factory=
   com.aliasi.tokenizer.EnglishStopTokenizerFactory stop set=[to, they,
   but, last, for, no, by, its, has, been, who, after, of, were, over,
   more, are, his, inc, would, any, when, she, only, on, says, her, had,
   be, such, so, or, he, and, not, that, co, than, will, some, this, we,
   other, can, have, one, about, most, from, corp, mrs, was, because,
   could, if, all, with, is, it, mr, a, ms, into, at, as, the, mz, in,
   up, which, s, an, there, their, also, out] base factory=
   com.aliasi.tokenizer.LowerCaseTokenizerFactory base factory=
   com.aliasi.tokenizer.IndoEuropeanTokenizerFactory
   {:type eu.europa.efsa.classifydoi.SynonymTokenizerFactory,

    :as-str

    "#<SynonymTokenizerFactory eu.europa.efsa.classifydoi.SynonymTokenizerFactory\n  base factory=\n    com.aliasi.tokenizer.TokenNGramTokenizerFactory\n      min ngram=1\n      max ngram=3\n      base factory=\n        com.aliasi.tokenizer.StopTokenizerFactory\n          stop set=[\", safeti, ', parma, (, ), /,, ., /, ,, i, -, author, european, food, efsa, ;, :]\n          base factory=\n            class com.aliasi.tokenizer.PorterStemmerTokenizerFactory\n              base factory=\n                com.aliasi.tokenizer.EnglishStopTokenizerFactory\n                  stop set=[to, they, but, last, for, no, by, its, has, been, who, after, of, were, over, more, are, his, inc, would, any, when, she, only, on, says, her, had, be, such, so, or, he, and, not, that, co, than, will, some, this, we, other, can, have, one, about, most, from, corp, mrs, was, because, could, if, all, with, is, it, mr, a, ms, into, at, as, the, mz, in, up, which, s, an, there, their, also, out]\n                  base factory=\n                    com.aliasi.tokenizer.LowerCaseTokenizerFactory\n                      base factory=\n                        com.aliasi.tokenizer.IndoEuropeanTokenizerFactory>"}

                      core.clj: 4403  clojure.core/ex-info
                     nippy.clj:  337  taoensso.nippy/eval15726/fn
                     nippy.clj:  144  taoensso.nippy/eval15265/fn/G
                     nippy.clj:  358  taoensso.nippy/freeze-to-out!
                   RestFn.java:  425  clojure.lang.RestFn/invoke
                     nippy.clj:  373  taoensso.nippy/freeze
                   RestFn.java:  410  clojure.lang.RestFn/invoke
                          REPL:    1  classify-doi.report/eval16475
                 Compiler.java: 6703  clojure.lang.Compiler/eval
                 Compiler.java: 6666  clojure.lang.Compiler/eval
                      core.clj: 2927  clojure.core/eval
                      main.clj:  239  clojure.main/repl/read-eval-print/fn
                      main.clj:  239  clojure.main/repl/read-eval-print
                      main.clj:  257  clojure.main/repl/fn
                      main.clj:  257  clojure.main/repl
                   RestFn.java: 1523  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   67  clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn
                      AFn.java:  152  clojure.lang.AFn/applyToHelper
                      AFn.java:  144  clojure.lang.AFn/applyTo
                      core.clj:  624  clojure.core/apply
                      core.clj: 1862  clojure.core/with-bindings*
                   RestFn.java:  425  clojure.lang.RestFn/invoke
        interruptible_eval.clj:   51  clojure.tools.nrepl.middleware.interruptible-eval/evaluate
        interruptible_eval.clj:  183  clojure.tools.nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
        interruptible_eval.clj:  152  clojure.tools.nrepl.middleware.interruptible-eval/run-next/fn
                      AFn.java:   22  clojure.lang.AFn/run
       ThreadPoolExecutor.java: 1145  java.util.concurrent.ThreadPoolExecutor/runWorker
       ThreadPoolExecutor.java:  615  java.util.concurrent.ThreadPoolExecutor$Worker/run
                   Thread.java:  745  java.lang.Thread/run
JonyEpsilon commented 9 years ago

That's weird. Gorilla REPL just passes on whatever the nREPL server sends to it, so I'm not sure what could be happening here. I'll take a look and see if I can figure it out.