【问题标题】:How to return a value on Clojure try/catch如何在 Clojure try/catch 上返回一个值
【发布时间】:2015-09-05 17:51:47
【问题描述】:

我在 Clojure 中有一个函数,我想在发生异常时返回 true,就像下面的代码一样;

    (try
        (code)
    (catch Exception e true)))

但是上面的方法给了我以下错误:

ClassCastException java.lang.Boolean 不能转换为 clojure.lang.IFn signal.message/read? (message.clj:12)

只有当一个函数代替时才有效:

    (try
        (code)
    (catch Exception e (= 1 1)))

有什么方法可以在 Clojure catch 上返回一个值?

【问题讨论】:

    标签: clojure exception-handling


    【解决方案1】:

    使用以下方法测试您的catch

    (try
      (throw (RuntimeException.))
      (catch Exception e true)))
    

    运行此代码将返回true

    【讨论】:

      【解决方案2】:

      您在问题中所写的内容完全正确:如果(code) 引发异常,则写入的 try/catch 将返回 true。问题出在其他地方:这个 try/catch 周围的代码有太多括号,或者您粘贴的代码与您正在运行的真实代码不匹配。

      【讨论】:

        猜你喜欢
        • 2013-06-28
        • 2019-09-28
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 2018-11-05
        • 2021-05-30
        • 1970-01-01
        相关资源
        最近更新 更多