我认为你可能指的是 :cljs
而不是 :cljc
。
我怀疑这里的主要问题是 new
是一个特殊形式,它需要一个编译器可识别的符号,而不是一个运行时变量。你可以便携地使用 ex-info
,但如果你想利用宿主平台的特定错误类型,你可能可以尝试以下类似的方法
(defn oob-error
[message]
#?(:clj (new ArrayIndexOutOfBoundsException message)
:cljs (new js/RangeError message))
(throw (oob-error "message"))