Chicken Scheme中的错误处理

时间:2017-10-03 01:04:05

标签: scheme chicken-scheme

我正在制作基本的端口扫描程序。 我试图打印"关闭"当我连接到一个关闭 港口和"开放"当我连接到开放端口时。

现在我正在这样做:

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

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

有更好的方法吗?我觉得我在思考它。

1 个答案:

答案 0 :(得分:2)

不熟悉鸡我会期望这样的东西是你想要的:

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

也就是说,给condition-case的表达式是"快乐路径" (就像Java中的try块一样。)