我有一个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"))))))
更新文档功能会抛出异常。我想将其抛回给调用者——在这种情况下是updateFeedback,以便执行catch块中的内容。但出于某种原因,Clojure记录了异常,而调用者中的catch块从未执行。
为了验证,我在update-document函数中添加了try catch块。那里的catch块得到了执行。
如何向函数添加throws子句?
更新:我已经更新了函数。对于语法问题表示歉意。我们正在使用的代码是继承而来的,我们被要求修复一个bug。任何指针都将非常有帮助。