V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuanwu
V2EX  ›  推广

木兰编程语言 0.0.14.4:中文报错信息规整,枚举引用新发现

  •  
  •   xuanwu · 2020-10-22 10:58:50 +08:00 · 1426 次点击
    这是一个创建于 1519 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知乎原文:木兰编程语言 0.0.14.4:中文报错信息规整,枚举引用新发现

    安装方法:pip install ulang,使用方法与例程请见 pypi 项目首页(源于码云首页)。 注意:必需 python 3.7

    木兰原始可执行文件的报错信息非常简单,并不包含出错位置和调用层级信息:

    >ulang-0.2.2.exe 测试\错误处理\引用模块.ul
    IndexError: list index out of range
    

    这在交互环境或者源码文件单一很短时还可接受,但开发更长代码或者多文件项目时就使得排错十分困难。四个月前添加了一些中文报错信息,本周在对井字棋游戏进行重构时,发现多文件互相引用时未显示层级调用信息,颇为不便,于是进行了修正。现在的报错行为举例如下:

    1 报错信息

    交互环境中仅提示出错所在位置简要信息:

    > 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:中文报错信息规整,枚举引用新发现]

    vvxex
        1
    vvxex  
       2020-10-22 11:56:48 +08:00   ❤️ 2
    要不。。。还是算了吧。。。
    suyuyu
        2
    suyuyu  
       2020-10-22 14:41:15 +08:00
    这么执着
    Fizzyi
        3
    Fizzyi  
       2020-10-22 14:57:38 +08:00
    没其他意思 但是我看着有点难受
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1288 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.