给silly实现了一个ernro模块
原文中文,约2300字,阅读约需6分钟。
📝
内容提要
本文讨论了silly模块中的errno设计,旨在提高错误处理的直观性和可比较性。通过将C层错误码转换为silly.errno类型,简化了错误判断,避免了因文件结束和读取超时导致的死循环问题,强调了符合直觉的重要性。
🎯
关键要点
-
silly模块中的errno设计旨在提高错误处理的直观性和可比较性。
-
通过将C层错误码转换为silly.errno类型,简化了错误判断。
-
设计中考虑了end of file和read timeout的判断,避免了死循环问题。
-
引入silly.errno类型,建立清晰的抽象边界,确保可比较性。
-
silly.errno的值是可比较的,而普通string类型的错误不具备这一特性。
-
设计中预留了扩展空间,以应对未来更复杂的需求。
-
符合直觉的重要性被强调,认为应高于一切设计考虑。
❓
延伸问答
silly模块中的errno设计有什么目的?
旨在提高错误处理的直观性和可比较性。
silly.errno类型与普通字符串类型的错误有什么区别?
silly.errno的值是可比较的,而普通字符串类型的错误不具备这一特性。
如何判断读取操作是否遇到end of file或read timeout?
可以通过检查返回的数据是否为空字符串来判断end of file,通过conn:isalive()判断连接是否存活来判断read timeout。
引入silly.errno类型的原因是什么?
为了建立清晰的抽象边界,确保错误的可比较性,并简化错误判断。
silly.errno的设计如何支持未来的扩展需求?
设计中预留了扩展空间,可以在不破坏兼容性的前提下,扩展为带有__tostring元方法的table类型。
在设计silly.errno时,符合直觉的重要性为何被强调?
因为符合直觉可以减少开发者的心智负担,避免错误使用导致的问题。
🏷️