知乎原文:木兰编程语言 0.0.14.4:中文报错信息规整,枚举引用新发现
安装方法:pip install ulang
,使用方法与例程请见 pypi 项目首页(源于码云首页)。 注意:必需 python 3.7
木兰原始可执行文件的报错信息非常简单,并不包含出错位置和调用层级信息:
>ulang-0.2.2.exe 测试\错误处理\引用模块.ul
IndexError: list index out of range
这在交互环境或者源码文件单一很短时还可接受,但开发更长代码或者多文件项目时就使得排错十分困难。四个月前添加了一些中文报错信息,本周在对井字棋游戏进行重构时,发现多文件互相引用时未显示层级调用信息,颇为不便,于是进行了修正。现在的报错行为举例如下:
交互环境中仅提示出错所在位置简要信息:
> func a(n) { return n1+1 }
> func b(n) { print(n) }
> b(a(2))
😰 请先定义'n1'再使用, 见第 1 行
运行源码时,可见调用各层的详细信息:
$ 木兰 测试 /错误处理 /未定义变量于多层函数.ul
😰 请先定义'数 1'再使用
见第 2 行:return 数 1 + 1
调用层级如下
见第 7 行:输出(加(2))
如果错误发生在其他文件,可见文件名:
$ 木兰 测试 /错误处理 /引用模块.ul
😰 取列表内容时,索引超出范围
“测试 /错误处理 /下标越界函数.ul”第 2 行:print([][0])
调用层级如下
见第 3 行:a()
如果某被引用的模块加载出错,现在只能提示问题模块,今后将尝试加上该模块的具体问题和定位信息,另外还有个相关问题:
$ 木兰 测试 /错误处理 /引用问题模块.ul
😰 No module named '测试'
调用层级如下
见第 1 行:using * in 测试.错误处理.无此变量
如果错误可以定位到列,则也用醒目符号提示出错位置,木兰源码的层级调用信息将在之后版本清除:
[余下部分见原文:木兰编程语言 0.0.14.4:中文报错信息规整,枚举引用新发现]
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.