gpt4 book ai didi

exception-handling - 如何捕获并重新抛出异常

转载 作者:行者123 更新时间:2023-12-04 07:59:34 24 4
gpt4 key购买 nike

我有一个 clojure 函数,它调用另一个函数来更新数据库。

(^{PUT true
Path "/{id}"
Produces ["application/json"]
Consumes ["application/json"]
ApiOperation {:value "Update" :notes ""}}
updateFeedback [this
^{PathParam "id"} id
body]
(require 'com.xx.x.xx.xx.xx-response)
(let [doc (json/read-json body)]
(if-let [valid-doc (validate doc)]
(try+
(->>
(assoc valid-doc :modificationDate (Utilities/getCurrentDate))
(couch/update-document dbs/xx-db)
(core/ok-response))
(catch java.io.IOException ex
(log/error "line num 197"))
(catch java.lang.Exception ex
(log/error "line num 200"))))))

update-document 函数抛出异常。我想把它扔回调用者——在这种情况下,updateFeedback 以便执行 catch 块中的内容。出于某种原因,clojure 会记录异常并且调用者中的 catch 块永远不会执行。

为了验证我在 try catch 块中的 update-document 函数中包装了代码。在那里 catch 块被执行了。

如何向函数添加 throws 子句?

更新:我已经更新了功能。为语法问题道歉。我已经更新了我们正在使用的代码。我对 clojure 不熟悉。这是我们继承的代码,我们被要求修复一个错误。任何指针都会非常有帮助。

最佳答案

如果您 try catch 然后重新抛出异常,您可以执行以下操作:

(defn throwing-function
[]
(/ 7 0))

(defn catching-function
[]
(try
(throwing-function)
(catch Exception e
(println "Caught exception:" e)
(println "Re-throwing ...")
(throw e))))

关于exception-handling - 如何捕获并重新抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31025489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com