
知乎原文:木兰编程语言 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:中文报错信息规整,枚举引用新发现]
1 vvxex 2020-10-22 11:56:48 +08:00 要不。。。还是算了吧。。。 |
2 suyuyu 2020-10-22 14:41:15 +08:00 这么执着 |
3 Fizzyi 2020-10-22 14:57:38 +08:00 没其他意思 但是我看着有点难受 |