I am not sure if this is the reason, but I would recommend checking the
command line options used when starting the java process in these cases.
Leiningen uses some command line options by default, for faster startup
times I think, that might affect how much detail is captured in stack
traces when exceptions are created.

Andy

On Wed, Oct 24, 2018 at 6:53 PM Austin Haas <aus...@pettomato.com> wrote:

> I don't understand what is going on here. I'm trying to throw an exception
> with a cause and sometimes the cause is included in the stacktrace and
> sometimes it isn't.
>
> ~$ clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version
> "1.10.0-beta4"}}}'
> Clojure 1.10.0-beta4
> user=> (try (/ 1 0) (catch Exception e "caught"))
> "caught"
> user=> (try (/ 1 0) (catch Exception e (throw (Exception. "caught and
> rethrown" e))))
> Evaluation error (ArithmeticException) at clojure.lang.Numbers.divide (
> Numbers.java:188).
> Divide by zero
> user=> (clojure.repl/pst)
> ArithmeticException Divide by zero
>  clojure.lang.Numbers.divide (Numbers.java:188)
>  clojure.lang.Numbers.divide (Numbers.java:3901)
>  user$eval3.invokeStatic (:2)
>  user$eval3.invoke (:2)
>  clojure.lang.Compiler.eval (Compiler.java:7172)
>  clojure.lang.Compiler.eval (Compiler.java:7135)
>  clojure.core/eval (core.clj:3206)
>  clojure.core/eval (core.clj:3202)
>  clojure.main/repl/read-eval-print--8898/fn--8901 (main.clj:309)
>  clojure.main/repl/read-eval-print--8898 (main.clj:307)
>  clojure.main/repl/fn--8907 (main.clj:332)
>  clojure.main/repl (main.clj:332)
> nil
>
> Same behavior with Clojure 1.8 and 1.9.
>
> If I start a REPL via lein, the cause appears:
>
> $ lein repl
> nREPL server started on port 46767 on host 127.0.0.1 - nrepl://
> 127.0.0.1:46767
> REPL-y 0.3.7, nREPL 0.2.12
> Clojure 1.8.0
> Java HotSpot(TM) 64-Bit Server VM 1.8.0_102-b14
>     Docs: (doc function-name-here)
>           (find-doc "part-of-name-here")
>   Source: (source function-name-here)
>  Javadoc: (javadoc java-object-or-class-here)
>     Exit: Control+D or (exit) or (quit)
>  Results: Stored in vars *1, *2, *3, an exception in *e
>
>
> user=> (try (/ 1 0) (catch Exception e (throw (Exception. "caught and
> rethrown" e))))
>
>
> ArithmeticException Divide by zero  clojure.lang.Numbers.divide
> (Numbers.java:158)
> user=> (clojure.repl/pst)
> java.lang.Exception: caught and rethrown
>                                   (Unknown Source) user/eval1736
>                                   (Unknown Source) user/eval1736
>                                 Compiler.java:6927 clojure.lang.Compiler.
> eval
>                                 Compiler.java:6890 clojure.lang.Compiler.
> eval
>                                      core.clj:3105 clojure.core/eval
>                                      core.clj:3101 clojure.core/eval
>                                       main.clj:240 clojure.main/repl[fn]
>                                       main.clj:240 clojure.main/repl[fn]
>                                       main.clj:258 clojure.main/repl[fn]
>                                       main.clj:258 clojure.main/repl
>                                       main.clj:174 clojure.main/repl
>                                   RestFn.java:1523 clojure.lang.RestFn.
> invoke
>                          interruptible_eval.clj:87 clojure.tools.nrepl.
> middleware.interruptible-eval/evaluate[fn]
>                                       AFn.java:152 clojure.lang.AFn.
> applyToHelper
>                                       AFn.java:144 clojure.lang.AFn.
> applyTo
>                                       core.clj:646 clojure.core/apply
>                                      core.clj:1881 clojure.core/with-
> bindings*
>                                      core.clj:1881 clojure.core/with-
> bindings*
>                                    RestFn.java:425 clojure.lang.RestFn.
> invoke
>                          interruptible_eval.clj:85 clojure.tools.nrepl.
> middleware.interruptible-eval/evaluate
>                          interruptible_eval.clj:55 clojure.tools.nrepl.
> middleware.interruptible-eval/evaluate
>                         interruptible_eval.clj:224 clojure.tools.nrepl.
> middleware.interruptible-eval/interruptible-eval[fn]
>                         interruptible_eval.clj:192 clojure.tools.nrepl.
> middleware.interruptible-eval/run-next[fn]
>                                        AFn.java:22 clojure.lang.AFn.run
>                       ThreadPoolExecutor.java:1142 java.util.concurrent.
> ThreadPoolExecutor.runWorker
>                        ThreadPoolExecutor.java:617 java.util.concurrent.
> ThreadPoolExecutor$Worker.run
>                                    Thread.java:745 java.lang.Thread.run
> Caused by: java.lang.ArithmeticException: Divide by zero
>                                   Numbers.java:158 clojure.lang.Numbers.
> divide
>                                  Numbers.java:3808 clojure.lang.Numbers.
> divide
> nil
>
> But if I run lein repl from inside a project directory, the cause is not
> included:
>
> $ lein new test-project
> Generating a project called test-project based on the 'default' template.
> The default template is intended for library projects, not applications.
> To see other templates (app, plugin, etc), try `lein help new`.
> ~$ cd test-project/
> ~/test-project$ lein repl
> nREPL server started on port 36739 on host 127.0.0.1 - nrepl://127.0.0.1:
> 36739
> REPL-y 0.3.7, nREPL 0.2.12
> Clojure 1.8.0
> Java HotSpot(TM) 64-Bit Server VM 1.8.0_102-b14
>     Docs: (doc function-name-here)
>           (find-doc "part-of-name-here")
>   Source: (source function-name-here)
>  Javadoc: (javadoc java-object-or-class-here)
>     Exit: Control+D or (exit) or (quit)
>  Results: Stored in vars *1, *2, *3, an exception in *e
>
>
> user=> (try (/ 1 0) (catch Exception e (throw (Exception. "caught and
> rethrown" e))))
> ArithmeticException Divide by zero  clojure.lang.Numbers.divide
> (Numbers.java:158)
>
>
> user=> (clojure.repl/pst)
> ArithmeticException Divide by zero
>  clojure.lang.Numbers.divide (Numbers.java:158)
>  clojure.lang.Numbers.divide (Numbers.java:3808)
>  user/eval1244 (form-init6841584094920823421.clj:1)
>  user/eval1244 (form-init6841584094920823421.clj:1)
>  clojure.lang.Compiler.eval (Compiler.java:6927)
>  clojure.lang.Compiler.eval (Compiler.java:6890)
>  clojure.core/eval (core.clj:3105)
>  clojure.core/eval (core.clj:3101)
>  clojure.main/repl/read-eval-print--7408/fn--7411 (main.clj:240)
>  clojure.main/repl/read-eval-print--7408 (main.clj:240)
>  clojure.main/repl/fn--7417 (main.clj:258)
>  clojure.main/repl (main.clj:258)
> nil
>
> Any ideas would be appreciated.
>
> -austin
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to