请在 2024 Clojure 状态调查! 中分享您的想法。

欢迎!请访问 关于 页面了解有关此程序的更多信息。

+1
错误

如果读者抛出的异常中包含直观的信息,则这些异常消息将更具信息量。这种情况很常见,这里举几个具体的例子(所有示例都来自 LispReader.java,尽管大多数情况下 EdnReader.java 中也存在相应的问题):

  • 如果 RegexReader 类遇到意外的文件结尾(EOF),它会报告 "读取正则表达式时遇到 EOF"。如果消息中包括它试图读取的正则表达式的前几个字符(在 sb 中可用),将有助于定位问题的人找到问题。

  • 上述逻辑同样适用于 StringReader。

  • 在 NamespaceMapReader 中,如果发现具有名称空间的映射实际上不是映射,则抛出的错误可以包括名称空间符号。

  • 检测到映射中的元素数量为奇数时,异常至少可以报告坏映射包含的元素数量,例如:“映射文字不能包含 7 个形式。映射文字必须包含偶数个形式。” 更好的是,包括前几个形式。

  • 在 MetaReader 中的 "只能将元数据应用于 IMetas" 异常远不如预期具有帮助性。至少,它应该报告不是 IMeta 的对象的类。

  • 如果 readDelimitedList 函数有一个额外的参数,它可以在遇到 EOF 时报告正在读取的内容的类型。如果没有额外的参数,它仍然会报告在尝试读取集合的第一个或第四个或第29个元素时遇到了 EOF。

1 个答案

0
参考:https://clojure.atlassian.net/browse/CLJ-2173(由 alex+import 报告)
...