给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时,符合直觉的重要性为何被强调?

因为符合直觉可以减少开发者的心智负担,避免错误使用导致的问题。

🏷️

标签

➡️

继续阅读