如果读取器的异常抛出包含的信息更丰富,那么会导致的情况会更有助于了解。
如果 RegexReader 类遇到意外的 EOF,它将报告 "读取正则表达式时遇到 EOF"。如果消息包含它正在尝试读取的正则表达式的开头几个字符(在 sb 中可用),将有助于解决问题的人找到问题。
同样的逻辑适用于 StringReader。
在 NamespaceMapReader 中,如果命名空间映射实际上不是映射,抛出的错误可以包括namespace符号。
每当检测到映射中的奇数个元素时,异常至少可以报告坏映射包含的元素数量,例如:"Map 字面量不能包含 7 个形式。Map 字面量必须包含偶数个形式。" 更好是前几个形式。
MetaReader 中的 "Metadata can only be applied to IMetas" 异常不像它本可以那么有帮助。至少应该报告不是一个 IMeta 的对象的类。
使用额外的参数,readDelimitedList 可以在达到 EOF 时报告正在读取的内容的类型。如果没有额外的参数,它仍然报告在尝试读取集合的第一个或第四个或29个元素时遇到 EOF。