Skip to content
Latchkey

Clojure "Execution error (ExceptionInfo)" / namespace in CI

A Clojure program threw at run time (not compile time). "Execution error (ExceptionInfo)" is a data-carrying ex-info exception; the message and the printed ex-data explain what the code rejected, and the CLI exits non-zero.

What this error means

A clojure -X:build or clojure -M run fails with "Execution error (ExceptionInfo) at ..." followed by a message and an ex-data map.

clj
Execution error (ExceptionInfo) at myapp.build/compile (build.clj:22).
Invalid config: missing :version
{:missing [:version]}

Common causes

The program threw ex-info on bad input or state

Application or build code called (throw (ex-info ...)) because a precondition, config value, or spec check failed at run time.

A downstream library signaled a data error

A library raised an ExceptionInfo (for example a failed spec or a rejected request) that propagated to the top level.

How to fix it

Read the message and ex-data

  1. Read the exception message and the printed ex-data map; they name the failing key or condition.
  2. Fix the input, config, or state the code rejected.
  3. Re-run the task and confirm it exits zero.

Print the full stack for context

Set the error reporting to stderr with a full trace so the throwing call site is clear in CI logs.

Terminal
clojure -J-Dclojure.main.report=stderr -X:build compile

How to prevent it

  • Validate config and inputs early with clear ex-info messages.
  • Surface ex-data in logs so CI failures are self-explaining.
  • Cover build and app preconditions with tests.

Frequently asked questions

What causes ""Execution error (ExceptionInfo)""?
Application or build code called (throw (ex-info ...)) because a precondition, config value, or spec check failed at run time.
How do I fix "Execution error (ExceptionInfo)"?
Read the message and ex-data

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card