gpt4 book ai didi

error-handling - 在 defmacro 中指示错误的常规方法是什么?

转载 作者:行者123 更新时间:2023-12-04 12:05:47 24 4
gpt4 key购买 nike

宏指示它传递了无效参数的传统的、行为良好的方式是什么?

(defmacro defthisthing [name & definitions] . . .)

我现在正在写一个宏来接受一大堆定义。如果相同的东西被定义两次,宏应该提示。类似地,如果其中一个定义使用了未在同一宏调用中的其他地方定义的术语,则宏应该提示,希望带有行号和列号,以便程序员可以准确地看到错误在哪里。

我目前认为抛出异常最有意义,因为无效的宏参数实际上是一个编译错误。如果编译器发现不平衡的括号,一切都应该关闭。

如果这是正确的,抛出的常规异常是什么?以及如何包含违规代码片段的文件名和行号?

如果这不正确,那么 Clojurely 方法是什么?

最佳答案

抛出异常听起来不错。我刚刚检查了 Clojure 源代码,这是在那里完成的:

(defmacro let ...) 调用 (defmacro assert-args ...) , 如果参数不满足它们的要求,它会抛出异常。

关于error-handling - 在 defmacro 中指示错误的常规方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36562238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com