Chicken Scheme 中的错误处理

Error handling in Chicken Scheme

我正在制作一个基本的端口扫描器。 当我连接到一个关闭的时,我正在尝试打印 "closed" port 和 "open" 当我连接到一个开放的端口时。

现在我正在这样做:

(condition-case (tcp-connect (list-ref host 0) port)
    [(exn) (print "closed")]
    ['nil (print "open")]))

我的打开没有正确打印(已使用 netcat 测试)。 我如何理解条件案例是它匹配错误。我正在尝试处理没有错误的情况,即连接成功。

有更好的方法吗?感觉自己多虑了

不熟悉 Chicken 我希望像这样的东西是你想要的:

(condition-case 
    (begin (tcp-connect (list-ref host 0) port)
           (print "open"))
    [(exn) (print "closed")])

也就是说,给 condition-case 的表达式是 "happy path"(就像 Java 中的 try 块)。