Skip to content

Instantly share code, notes, and snippets.

@liquidz
Created March 13, 2019 01:20
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 liquidz/5b8036551cbde7db9dbe2264b1a9da2a to your computer and use it in GitHub Desktop.
Save liquidz/5b8036551cbde7db9dbe2264b1a9da2a to your computer and use it in GitHub Desktop.
faaaa
$ docker run -it clojure:tools-deps
Clojure 1.10.0
user=> (java.net.URL. nil)
Execution error (NullPointerException) at java.net.URL/<init> (URL.java:532).
null
user=> (try (java.net.URL. nil) (catch java.net.MalformedURLException _ "faaaa"))
"faaaa"
user=>
@ayato-p
Copy link

ayato-p commented Mar 13, 2019

user=> (java.net.URL. nil)
Execution error (NullPointerException) at java.net.URL/<init> (URL.java:532).
null
user=> *e
#error {
 :cause nil
 :via
 [{:type java.net.MalformedURLException
   :message nil
   :at [java.net.URL <init> "URL.java" 627]}
  {:type java.lang.NullPointerException
   :message nil
   :at [java.net.URL <init> "URL.java" 532]}]
 :trace
 [[java.net.URL <init> "URL.java" 532]
  [java.net.URL <init> "URL.java" 490]
  [java.net.URL <init> "URL.java" 439]
  [user$eval11 invokeStatic "NO_SOURCE_FILE" 1]
  [user$eval11 invoke "NO_SOURCE_FILE" 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_opt invokeStatic "main.clj" 499]
  [clojure.main$main invokeStatic "main.clj" 598]
  [clojure.main$main doInvoke "main.clj" 561]
  [clojure.lang.RestFn invoke "RestFn.java" 397]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.RestFn applyTo "RestFn.java" 132]
  [clojure.lang.Var applyTo "Var.java" 705]
  [clojure.main main "main.java" 37]]}

@liquidz
Copy link
Author

liquidz commented Mar 13, 2019

https://twitter.com/uochan/status/1105640405213708288

user=> (java.net.URL. nil)
Execution error (NullPointerException) at java.net.URL/<init> (URL.java:532).
null
user=> *e
#error {
 :cause nil
 :via
 [{:type java.net.MalformedURLException
   :message nil
   :at [java.net.URL <init> "URL.java" 627]}
  {:type java.lang.NullPointerException
   :message nil
   :at [java.net.URL <init> "URL.java" 532]}]
   ...

java.net.URL constructor calls initCause with the thrown exception.
https://hg.openjdk.java.net/jdk/jdk/file/1cef5fc16af8/src/java.base/share/classes/java/net/URL.java#l685

@liquidz
Copy link
Author

liquidz commented Mar 13, 2019

user=> (def a (java.net.MalformedURLException. "foo"))
#'user/a
user=> (throw a)
Execution error (MalformedURLException) at sun.reflect.NativeConstructorAccessorImpl/newInstance0 (NativeConstructorAccessorImpl.java:-2).
foo

user=> (def b (NullPointerException. "bar"))
#'user/b
user=> (throw b)
Execution error (NullPointerException) at sun.reflect.NativeConstructorAccessorImpl/newInstance0 (NativeConstructorAccessorImpl.java:-2).
bar

user=> (.initCause a b)
#error {
 :cause "bar"
 :via
 [{:type java.net.MalformedURLException
   :message "foo"
   :at [sun.reflect.NativeConstructorAccessorImpl newInstance0 "NativeConstructorAccessorImpl.java" -2]}
  {:type java.lang.NullPointerException
   :message "bar"
   :at [sun.reflect.NativeConstructorAccessorImpl newInstance0 "NativeConstructorAccessorImpl.java" -2]}]
 :trace
 [[sun.reflect.NativeConstructorAccessorImpl newInstance0 "NativeConstructorAccessorImpl.java" -2]
  [sun.reflect.NativeConstructorAccessorImpl newInstance "NativeConstructorAccessorImpl.java" 62]
  [sun.reflect.DelegatingConstructorAccessorImpl newInstance "DelegatingConstructorAccessorImpl.java" 45]
  [java.lang.reflect.Constructor newInstance "Constructor.java" 423]
  [clojure.lang.Compiler$NewExpr eval "Compiler.java" 2615]
  [clojure.lang.Compiler$DefExpr eval "Compiler.java" 457]
  [clojure.lang.Compiler eval "Compiler.java" 7181]
  [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_opt invokeStatic "main.clj" 499]
  [clojure.main$main invokeStatic "main.clj" 598]
  [clojure.main$main doInvoke "main.clj" 561]
  [clojure.lang.RestFn invoke "RestFn.java" 397]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.RestFn applyTo "RestFn.java" 132]
  [clojure.lang.Var applyTo "Var.java" 705]
  [clojure.main main "main.java" 37]]}

user=> (throw a)
Execution error (NullPointerException) at sun.reflect.NativeConstructorAccessorImpl/newInstance0 (NativeConstructorAccessorImpl.java:-2).
bar

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment