在环形应用程序中捕获异常的惯用方法

2024-04-22

处理环形应用程序中的异常的惯用方法是什么?我想捕获异常并返回 500 页。我怎么做 ?

我在下面的代码中使用了 Mustache,但是它不起作用 -

(def my-app (try
              (app
               (wrap-logger true)
               wrap-keyword-params
               wrap-params
               wrap-file-info
               (wrap-file "resources/public/")
               [""]  (index-route @prev-h nil)
               ["getContent"] (fetch-url)
               ["about"] "We are freaking cool man !!"
               [&] (-> "Nothing was found" response (status 404) constantly))
              (catch Exception e
                (app
                 [&] (-> "This is an error" response (status 500) constantly)))

您不想将整个应用程序包装在 try-catch 块中,而是希望单独包装每个请求的处理。制作一个执行此操作的中间件非常容易。就像是:

(defn wrap-exception [handler]
  (fn [request]
    (try (handler request)
      (catch Exception e
         {:status 500
          :body "Exception caught"}))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在环形应用程序中捕获异常的惯用方法 的相关文章

随机推荐

  • 获取 Jenkins 多分支管道中的分支列表

    Jenkins 多分支管道项目的 Blue Ocean 界面显示了自动创建的多个分支 是否有一种编程方式可以从要添加到 Jenkinsfile 的代码中列出管道中的分支 此问题询问位于 Jenkins 应用程序对象模型内的 Jenkins
  • 模板化成员函数的地址[重复]

    这个问题在这里已经有答案了 在下面的例子中 如何找到成员函数f的地址 template
  • 时间戳格式 - 从 1/1000 秒到 1/100 秒

    需要将1 1000秒分辨率的时间戳转换为1 100分辨率 我可能会用to char timestamp text 用于此目的的格式化功能 但是需要帮助text在这里使用 输入表 注意 这里的时间戳存储为 varchar ms1000 val
  • 复杂对象上的自定义 NSSortDescriptor

    这是我的第一篇文章 如果我可能不尊重所有惯例 我很抱歉 尽管我会尽力而为 我以前总是在 SO 上找到解决我的问题的方法 但我完全陷入了一个相当复杂的可可问题 我正在尝试对 CoreData 对象列表进行复杂的排序 我有一个由 Book 对象
  • Jquery:停止传播?

    我已经添加了 stopPropagation 但是 我仍然连续出现两个弹出窗口 这比以前好多了 其中一个被单击的元素有 20 个弹出窗口 是否有更好的方法或者我错过了什么 top document ready function click
  • 如何在 Android 浏览器上阻止某些网址?

    如何在 Android 默认浏览器上阻止某些网址 网站 我想限制用户访问某些列入黑名单的网址 例如 如果我想阻止 Facebook 那么手机内置应用程序浏览器将无法访问此 Facebook 网站 您想通过让用户安装应用程序来阻止用户设备上的
  • 使用 shutdown 终止 Amazon EC2 实例

    我可以使用 API 命令终止 Amazon EC2 实例ec2 终止实例但我试图找出如何在登录到 EC2 实例本身时执行此操作 我试过了立即关闭 h但这只是 停止 实例 而没有完全终止它 有什么办法可以做到这一点吗 您可以在创建实例时设置一
  • tkinter 无法正确识别屏幕分辨率

    我使用的是 4k 显示器 3840x2160 from tkinter import root Tk width root winfo screenwidth height root winfo screenheight print wid
  • MVC DropDownList SelectedValue 未正确显示

    我尝试搜索 但没有找到任何可以解决我的问题的内容 我在 Razor 视图上有一个 DropDownList 它不会显示我在 SelectList 中标记为 选定 的项目 以下是填充列表的控制器代码 var statuses new Sele
  • 密码强度计

    我正在尝试创建自己的 JS 密码强度计 它之前可以工作 但我不喜欢它的工作方式 所以我尝试使用 score 10 而不仅仅是 score 这是我的代码 http jsfiddle net RSq4L http jsfiddle net RS
  • 为什么 Kotlin 编译器需要 var 属性的显式初始化器?

    我无法理解以下 Kotlin 文档 The initializer getter and setter are optional Property type is optional if it can be inferred from th
  • 无法读取未定义的属性“forEach”

    var funcs 1 2 forEach i gt funcs push gt i 为什么会产生下面的错误 TypeError Cannot read property forEach of undefined at Object
  • 如何为 JVectorMap jquery 插件生成新的自定义地图?

    有用的链接 JVectorMap http jvectormap com http jvectormap com 购物中心示例 http jvectormap com examples mall http jvectormap com ex
  • Scala 中 def 和 val 的区别

    循环定义如下 def loop Boolean loop 当x定义为 def x loop然后控制台中会显示 x Boolean and 当x定义为 val x loop然后就进入无限循环 我知道 def 正在使用按名称调用 而 val 正
  • 不允许主机连接到此 MySQL 服务器以进行客户端-服务器应用程序

    我刚刚将表从一台 Web 主机导出到另一台 AWS 以为一切都会顺利 是的 没错 好吧 一切可能出错的事情都已经出错了 尝试查询我的数据库时出现此错误 我之前没有得到过 SQLSTATE HY000 1130 Host
  • Android:如何使用单个按钮执行多个任务

    我有 1 个按钮处于活动状态 我想使用这个 1 按钮来执行多项任务 那么我该怎么办呢 如果我第一次按此按钮 则更改 2 次按钮 如果我按第二次 它就会更新我的数据 但这只是第一次工作第二次就不起作用了 查看我的代码我尝试了什么 Intent
  • 更好的数据库设计是:更多的表还是更多的列?

    一位前同事坚持认为 具有更多表且每个列较少的数据库比具有较少表且每个列较多的数据库更好 例如 您将拥有一个名称表 一个地址表 一个城市表等 而不是包含名称 地址 城市 州 邮政编码等列的客户表 他认为这种设计更加高效和灵活 也许它更灵活 但
  • Caffe 中的预测 - 异常:输入 blob 参数与网络输入不匹配

    我使用 Caffe 使用非常简单的 CNN 结构对非图像数据进行分类 我在尺寸为 n x 1 x 156 x 12 的 HDF5 数据上训练网络没有任何问题 但是 我在对新数据进行分类时遇到了困难 如何在不进行任何预处理的情况下进行简单的前
  • CUDA Thrust 和 sort_by_key

    我正在寻找 CUDA 上的排序算法 它可以对元素数组 A 双精度 进行排序 并返回该数组 A 的键 B 数组 我知道sort by keyThrust 库中的函数 但我希望元素数组 A 保持不变 我能做些什么 我的代码是 void sort
  • 在环形应用程序中捕获异常的惯用方法

    处理环形应用程序中的异常的惯用方法是什么 我想捕获异常并返回 500 页 我怎么做 我在下面的代码中使用了 Mustache 但是它不起作用 def my app try app wrap logger true wrap keyword