Skip to content

Instantly share code, notes, and snippets.

@lsh-0
Last active December 18, 2018 02:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lsh-0/173f1a11e2e76f718c002607c8fa1e0f to your computer and use it in GitHub Desktop.
Save lsh-0/173f1a11e2e76f718c002607c8fa1e0f to your computer and use it in GitHub Desktop.
clojure exceptions 1.9 vs 1.10

1.9

user=> (Exception. "foo")
#error {
 :cause "foo"
 :via
 [{:type java.lang.Exception
   :message "foo"
   :at [user$eval23309 invokeStatic "form-init1994649733047768579.clj" 1]}]
 :trace
 [[user$eval23309 invokeStatic "form-init1994649733047768579.clj" 1]
  [user$eval23309 invoke "form-init1994649733047768579.clj" 1]
  [clojure.lang.Compiler eval "Compiler.java" 7062]
  [clojure.lang.Compiler eval "Compiler.java" 7025]
  [clojure.core$eval invokeStatic "core.clj" 3206]
  [clojure.core$eval invoke "core.clj" 3202]
  [clojure.main$repl$read_eval_print__8572$fn__8575 invoke "main.clj" 243]
  [clojure.main$repl$read_eval_print__8572 invoke "main.clj" 243]
  [clojure.main$repl$fn__8581 invoke "main.clj" 261]
  [clojure.main$repl invokeStatic "main.clj" 261]
  [clojure.main$repl doInvoke "main.clj" 177]
  [clojure.lang.RestFn invoke "RestFn.java" 1523]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__22681 invoke "interruptible_eval.clj" 87]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.AFn applyTo "AFn.java" 144]
  [clojure.core$apply invokeStatic "core.clj" 657]
  [clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1965]
  [clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1965]
  [clojure.lang.RestFn invoke "RestFn.java" 425]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invokeStatic "interruptible_eval.clj" 85]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 55]
  [clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__22726$fn__22729 invoke "interruptible_eval.clj" 222]
  [clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__22721 invoke "interruptible_eval.clj" 190]
  [clojure.lang.AFn run "AFn.java" 22]
  [java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1149]
  [java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 624]
  [java.lang.Thread run "Thread.java" 748]]}
  
user=> (let [a] (prn a))

CompilerException clojure.lang.ExceptionInfo: Call to clojure.core/let did not conform to spec:
In: [0] val: () fails spec: :clojure.core.specs.alpha/bindings at: [:args :bindings :init-expr] predicate: any?,  Insufficient input
 #:clojure.spec.alpha{:problems [{:path [:args :bindings :init-expr], :reason "Insufficient input", :pred clojure.core/any?, :val (), :via [:clojure.core.specs.alpha/bindings :clojure.core.specs.alpha/bindings], :in [0]}], :spec #object[clojure.spec.alpha$regex_spec_impl$reify__2436 0x2818bac5 "clojure.spec.alpha$regex_spec_impl$reify__2436@2818bac5"], :value ([a] (prn a)), :args ([a] (prn a))}, compiling:(/tmp/form-init1994649733047768579.clj:1:1) 
user=> *e
#error {
 :cause "Call to clojure.core/let did not conform to spec:\nIn: [0] val: () fails spec: :clojure.core.specs.alpha/bindings at: [:args :bindings :init-expr] predicate: any?,  Insufficient input\n"
 :data #:clojure.spec.alpha{:problems [{:path [:args :bindings :init-expr], :reason "Insufficient input", :pred clojure.core/any?, :val (), :via [:clojure.core.specs.alpha/bindings :clojure.core.specs.alpha/bindings], :in [0]}], :spec #object[clojure.spec.alpha$regex_spec_impl$reify__2436 0x2818bac5 "clojure.spec.alpha$regex_spec_impl$reify__2436@2818bac5"], :value ([a] (prn a)), :args ([a] (prn a))}
 :via
 [{:type clojure.lang.Compiler$CompilerException
   :message "clojure.lang.ExceptionInfo: Call to clojure.core/let did not conform to spec:\nIn: [0] val: () fails spec: :clojure.core.specs.alpha/bindings at: [:args :bindings :init-expr] predicate: any?,  Insufficient input\n #:clojure.spec.alpha{:problems [{:path [:args :bindings :init-expr], :reason \"Insufficient input\", :pred clojure.core/any?, :val (), :via [:clojure.core.specs.alpha/bindings :clojure.core.specs.alpha/bindings], :in [0]}], :spec #object[clojure.spec.alpha$regex_spec_impl$reify__2436 0x2818bac5 \"clojure.spec.alpha$regex_spec_impl$reify__2436@2818bac5\"], :value ([a] (prn a)), :args ([a] (prn a))}, compiling:(/tmp/form-init1994649733047768579.clj:1:1)"
   :at [clojure.lang.Compiler checkSpecs "Compiler.java" 6891]}
  {:type clojure.lang.ExceptionInfo
   :message "Call to clojure.core/let did not conform to spec:\nIn: [0] val: () fails spec: :clojure.core.specs.alpha/bindings at: [:args :bindings :init-expr] predicate: any?,  Insufficient input\n"
   :data #:clojure.spec.alpha{:problems [{:path [:args :bindings :init-expr], :reason "Insufficient input", :pred clojure.core/any?, :val (), :via [:clojure.core.specs.alpha/bindings :clojure.core.specs.alpha/bindings], :in [0]}], :spec #object[clojure.spec.alpha$regex_spec_impl$reify__2436 0x2818bac5 "clojure.spec.alpha$regex_spec_impl$reify__2436@2818bac5"], :value ([a] (prn a)), :args ([a] (prn a))}
   :at [clojure.core$ex_info invokeStatic "core.clj" 4739]}]
 :trace
 [[clojure.core$ex_info invokeStatic "core.clj" 4739]
  [clojure.core$ex_info invoke "core.clj" 4739]
  [clojure.spec.alpha$macroexpand_check invokeStatic "alpha.clj" 689]
  [clojure.spec.alpha$macroexpand_check invoke "alpha.clj" 681]
  [clojure.lang.AFn applyToHelper "AFn.java" 156]
  [clojure.lang.AFn applyTo "AFn.java" 144]
  [clojure.lang.Var applyTo "Var.java" 702]
  [clojure.lang.Compiler checkSpecs "Compiler.java" 6889]
  [clojure.lang.Compiler macroexpand1 "Compiler.java" 6907]
  [clojure.lang.Compiler macroexpand "Compiler.java" 6972]
  [clojure.lang.Compiler eval "Compiler.java" 7046]
  [clojure.lang.Compiler eval "Compiler.java" 7025]
  [clojure.core$eval invokeStatic "core.clj" 3206]
  [clojure.core$eval invoke "core.clj" 3202]
  [clojure.main$repl$read_eval_print__8572$fn__8575 invoke "main.clj" 243]
  [clojure.main$repl$read_eval_print__8572 invoke "main.clj" 243]
  [clojure.main$repl$fn__8581 invoke "main.clj" 261]
  [clojure.main$repl invokeStatic "main.clj" 261]
  [clojure.main$repl doInvoke "main.clj" 177]
  [clojure.lang.RestFn invoke "RestFn.java" 1523]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__22681 invoke "interruptible_eval.clj" 87]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.AFn applyTo "AFn.java" 144]
  [clojure.core$apply invokeStatic "core.clj" 657]
  [clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1965]
  [clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1965]
  [clojure.lang.RestFn invoke "RestFn.java" 425]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invokeStatic "interruptible_eval.clj" 85]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 55]
  [clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__22726$fn__22729 invoke "interruptible_eval.clj" 222]
  [clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__22721 invoke "interruptible_eval.clj" 190]
  [clojure.lang.AFn run "AFn.java" 22]
  [java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1149]
  [java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 624]
  [java.lang.Thread run "Thread.java" 748]]}

1.10

user=> (Exception. "foo")
#error {
 :cause "foo"
 :via
 [{:type java.lang.Exception
   :message "foo"
   :at [user$eval23306 invokeStatic "form-init5705602209460044594.clj" 1]}]
 :trace
 [[user$eval23306 invokeStatic "form-init5705602209460044594.clj" 1]
  [user$eval23306 invoke "form-init5705602209460044594.clj" 1]
  [clojure.lang.Compiler eval "Compiler.java" 7176]
  [clojure.lang.Compiler eval "Compiler.java" 7131]
  [clojure.core$eval invokeStatic "core.clj" 3214]
  [clojure.core$eval invoke "core.clj" 3210]
  [clojure.main$repl$read_eval_print__9068$fn__9071 invoke "main.clj" 414]
  [clojure.main$repl$read_eval_print__9068 invoke "main.clj" 414]
  [clojure.main$repl$fn__9077 invoke "main.clj" 435]
  [clojure.main$repl invokeStatic "main.clj" 435]
  [clojure.main$repl doInvoke "main.clj" 345]
  [clojure.lang.RestFn invoke "RestFn.java" 1523]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__22675 invoke "interruptible_eval.clj" 87]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.AFn applyTo "AFn.java" 144]
  [clojure.core$apply invokeStatic "core.clj" 665]
  [clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1973]
  [clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1973]
  [clojure.lang.RestFn invoke "RestFn.java" 425]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invokeStatic "interruptible_eval.clj" 85]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 55]
  [clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__22720$fn__22723 invoke "interruptible_eval.clj" 222]
  [clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__22715 invoke "interruptible_eval.clj" 190]
  [clojure.lang.AFn run "AFn.java" 22]
  [java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1149]
  [java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 624]
  [java.lang.Thread run "Thread.java" 748]]}


user=> (let [a] (prn a))

Syntax error macroexpanding clojure.core/let at (form-init5705602209460044594.clj:1:1).
val: [a] fails spec: :clojure.core.specs.alpha/bindings at: [:args :bindings] predicate: even-number-of-forms?
user=> *e
#error {
 :cause "Call to clojure.core/let did not conform to spec:\nIn: [0] val: [a] fails spec: :clojure.core.specs.alpha/bindings at: [:args :bindings] predicate: even-number-of-forms?\n"
 :data #:clojure.spec.alpha{:problems [{:path [:args :bindings], :pred clojure.core.specs.alpha/even-number-of-forms?, :val [a], :via [:clojure.core.specs.alpha/bindings :clojure.core.specs.alpha/bindings], :in [0]}], :spec #object[clojure.spec.alpha$regex_spec_impl$reify__2436 0x6af2f22e "clojure.spec.alpha$regex_spec_impl$reify__2436@6af2f22e"], :value ([a] (prn a)), :args ([a] (prn a))}
 :via
 [{:type clojure.lang.Compiler$CompilerException
   :message "Syntax error macroexpanding clojure.core/let at (/tmp/form-init5705602209460044594.clj:1:1)."
   :data #:clojure.error{:phase :macro-syntax-check, :line 1, :column 1, :source "/tmp/form-init5705602209460044594.clj", :symbol clojure.core/let}
   :at [clojure.lang.Compiler checkSpecs "Compiler.java" 6971]}
  {:type clojure.lang.ExceptionInfo
   :message "Call to clojure.core/let did not conform to spec:\nIn: [0] val: [a] fails spec: :clojure.core.specs.alpha/bindings at: [:args :bindings] predicate: even-number-of-forms?\n"
   :data #:clojure.spec.alpha{:problems [{:path [:args :bindings], :pred clojure.core.specs.alpha/even-number-of-forms?, :val [a], :via [:clojure.core.specs.alpha/bindings :clojure.core.specs.alpha/bindings], :in [0]}], :spec #object[clojure.spec.alpha$regex_spec_impl$reify__2436 0x6af2f22e "clojure.spec.alpha$regex_spec_impl$reify__2436@6af2f22e"], :value ([a] (prn a)), :args ([a] (prn a))}
   :at [clojure.spec.alpha$macroexpand_check invokeStatic "alpha.clj" 689]}]
 :trace
 [[clojure.spec.alpha$macroexpand_check invokeStatic "alpha.clj" 689]
  [clojure.spec.alpha$macroexpand_check invoke "alpha.clj" 681]
  [clojure.lang.AFn applyToHelper "AFn.java" 156]
  [clojure.lang.AFn applyTo "AFn.java" 144]
  [clojure.lang.Var applyTo "Var.java" 705]
  [clojure.lang.Compiler checkSpecs "Compiler.java" 6969]
  [clojure.lang.Compiler macroexpand1 "Compiler.java" 6987]
  [clojure.lang.Compiler macroexpand "Compiler.java" 7074]
  [clojure.lang.Compiler eval "Compiler.java" 7160]
  [clojure.lang.Compiler eval "Compiler.java" 7131]
  [clojure.core$eval invokeStatic "core.clj" 3214]
  [clojure.core$eval invoke "core.clj" 3210]
  [clojure.main$repl$read_eval_print__9068$fn__9071 invoke "main.clj" 414]
  [clojure.main$repl$read_eval_print__9068 invoke "main.clj" 414]
  [clojure.main$repl$fn__9077 invoke "main.clj" 435]
  [clojure.main$repl invokeStatic "main.clj" 435]
  [clojure.main$repl doInvoke "main.clj" 345]
  [clojure.lang.RestFn invoke "RestFn.java" 1523]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__22675 invoke "interruptible_eval.clj" 87]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.AFn applyTo "AFn.java" 144]
  [clojure.core$apply invokeStatic "core.clj" 665]
  [clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1973]
  [clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1973]
  [clojure.lang.RestFn invoke "RestFn.java" 425]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invokeStatic "interruptible_eval.clj" 85]
  [clojure.tools.nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 55]
  [clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__22720$fn__22723 invoke "interruptible_eval.clj" 222]
  [clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__22715 invoke "interruptible_eval.clj" 190]
  [clojure.lang.AFn run "AFn.java" 22]
  [java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1149]
  [java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 624]
  [java.lang.Thread run "Thread.java" 748]]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment