I use Clojure because I find it more fun and interesting to program in. As a bonus, it happens to also be practical, robust, productive and safe; with great tooling, a huge ecosystem, reach to the browser, server, command line, and desktop/mobile, good performance, good scale, and an awesome community.
Because of that, for me, yes, Clojure is a great option for everyone, unless you’ve got reasons why you just can’t use it at all, like needing total control of memory, doing high performance graphic rendering or digital signal processing, targeting a platform which doesn’t support or allow it, needing hard real time guarantees, etc.
I’ve done a little Elixir (on my free time), and it’s also a pretty fun language to program in, which actually takes a lot of inspiration from Clojure. So I wouldn’t blame you for going either way. Now I’ll say that from a work perspective, there’s more places using JS or JVM where you can sneak in some Clojure, where as there’s a lot less places already running BEAM to sneak in some Elixir, and convincing a full platform change is much harder in my experience.
Another thing is your investment in Clojure will take you further in my opinion. From a learning opportunity, there’s more to learn from Clojure, as it can support more paradigms and language constructs/patterns. And you can reuse a lot of your knowledge of it towards most other Lisps: Emacs Lisp, Racket, Common Lisp, Fennel, Janet, etc. From a practical standpoint, it lets you reach further too, cause you can reuse a lot of learnings as well when you venture towards ClojureScript, Clojure CLR, Babashka, Clojerl, Ferret, which allow you to target JS, .Net, Unity, scripting, Beam, C++, etc.
That said, it’s not without its quirks. Like you said, due to the JVM, you need to deal with exceptions, and for now (until project Loom arrives), async is a bit more cumbersome, because most of the Java standard API has blocking or multiplexed APIs, not async ones. And then there are some specific Clojure quirks, like slow startup times, a few things with slightly unintuitive names like contains?
, slightly tricky handling of unboxed math, subpar error messages, lazyness gotchas, terse documentation, lack of free tutorials and guides, etc. Also, Clojure hates ready made things, so not a lot of giant frameworks with the kitchen sync. Some people don’t like the Lisp syntax and can’t get used to it. And the lack of static types can annoy some people as well. Clojure is also heavily functional (Elixir too), and some people don’t like that and never get used to it either.
Finally, I do want to insist on the Clojure community being awesome. Something that annoys me a lot in other language communities is you’ll very often search for something, only to find answers that really don’t know what they’re talking about, yet are upvoted, top search result, and worded like they are the most knowledgeable person. People might say like… Well you shouldn’t do this anyways bla bla. Like I’m way past that point buddy, and I need someone with deep knowledge here, and Clojure has an overabundance of absolutely knowledgeable and friendly devs in its community. People with two digit experience in the field, that are passionate, and who have tried a lot of other languages, and not just superficially tried them, like they’ve been around, and they’re smart. You’ll learn a lot from them, and the topics discussed will always be informative and interesting.
This has a downside that, if you’re beginner (especially to programming), they might be too knowledgeable for you, as they tend to want to teach you the details and all as well, and they might sometimes skim over the “easy” stuff.
Well hope this helps you make a choice.