On page 206 to 207, my copy of Programming Clojure, Third Edition asserts the following:
assert
tests an expression and raises an exception if it’s not logically true:(assert (= 1 1)) -> nil (assert (= 1 2)) -> java.lang.Exception: Assert failed: (= 1 2)
This matches the assert
docstring:
Evaluates expr and throws an exception if it does not evaluate to
logical true.
Unfortunately, it’s not so. assert
raises an AssertionError, which is not an Exception. Reference Clojure source, ask Clojure question, JIRA ticket, REPL output:
$ clj
Clojure 1.11.1
user=> (assert (= 1 1))
nil
user=> (assert (= 1 2))
Execution error (AssertionError) at user/eval138 (REPL:1).
Assert failed: (= 1 2)
user=> (set! *assert* false)
false
user=> (assert (= 1 2))
nil
Perhaps the book’s REPL output predates this 2009 commit?