小编rob*_*eng的帖子

Clojure 异常未捕获

我正在学习 Clojure,我想创建一个像 Javas try-catch 一样工作的宏。如果抛出异常,则应返回异常。否则,应返回结果。任何打开的资源也应该在 finally 部分关闭(不使用 with-open)。但是,我确实有一个问题,除了没有被抓住,我不知道如何解决。任何帮助或建议将不胜感激!

这是我的代码:

(defmacro my-try 
  ([expression] 
   `(try 
      ~expression
      (catch Exception e# e#)
      )
   )
  ([[value variable] expression] 
   `(let [~value ~variable] 
      (try
        ~expression
        (catch Exception e# e#)
        (finally (if (instance? java.io.Closeable ~value) (.close ~value)))
        )
      )
   )
  )
Run Code Online (Sandbox Code Playgroud)

当我尝试打开并读取不存在的文件时:

(def v (my-try [s (FileReader. (File. "missing-file"))] (. s read)))
(println v)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Execution error (FileNotFoundException) at java.io.FileInputStream/open0 (FileInputStream.java:-2).
missing-file (Det går inte att hitta filen)
Run Code Online (Sandbox Code Playgroud)

我怀疑这个错误信息是一个未捕获的异常,因为(1)它没有遵循其他异常的结构,以及(2)如果我改变了异常返回的格式,比如添加了特定的消息,错误信息仍然如此没变。

非常感谢任何帮助找出问题所在!非常感谢您考虑我的要求。

exception finally clojure try-catch

2
推荐指数
1
解决办法
79
查看次数

JQuery - 在处理文本文本之前淡出文本

我有一张照片,整个屏幕都很糟糕.每隔5秒,背景图像会转换为另一个背景图像.对此,我有一个带有一些好文本的标题.当图片发生变化时,我想淡出我的文字,然后用另一个文字淡入.我已经完成了一半的工作.它会改变文本和淡入淡出.但是,它以奇怪的顺序完成它.这是我执行更改的代码:

$("header h1").fadeOut(500);
$("#bildfram").css("background-image", "url(" + bilder[bild] + ")" );
$("header h1").text("GeForce | " + text[bild]);
$("header h1").fadeIn(500);
Run Code Online (Sandbox Code Playgroud)

这是代码所在的顺序.但执行有点奇怪.在网站上执行如下:

Change background image ($("#bildfram").css("background-image", "url(" + bilder[bild] + ")" );)
Change the text ($("header h1").text("GeForce | " + text[bild]);)
Fade out the text ($("header h1").fadeOut(500);)
Fade in the text ($("header h1").fadeIn(500);)
Run Code Online (Sandbox Code Playgroud)

我希望代码按脚本编写的顺序执行,FadeOut Text,Change Picture,Change Text,FadeIn Text.

提前致谢!

html javascript css jquery

0
推荐指数
1
解决办法
31
查看次数

标签 统计

clojure ×1

css ×1

exception ×1

finally ×1

html ×1

javascript ×1

jquery ×1

try-catch ×1