gpt4 book ai didi

tcl - 防止 Tcl 在未知命令上崩溃

转载 作者:行者123 更新时间:2023-12-04 15:15:16 26 4
gpt4 key购买 nike

我在做eval关于文件的内容。该文件由我解析的标签组成。每行都有一个标签,我有一个 proc为每个标签定义,以便 eval成功。然而,有时用户添加新标签,然后 eval命令失败,因为未知命令。

有没有办法防止 Tcl 在尝试时崩溃 eval未知命令?
理想情况下,它应该允许我用我自己定义的行为来代替 - 例如记录错误并继续使用 eval .

编辑 :

不幸的是,我只能使用 Tcl 8.4。
我尝试执行以下操作,as suggested here :

proc handle_unknown_label {cmd args} { ... }

进而:
rename unknown _old_system_unknown
rename handle_unknown_label unknown

catch {set ret [eval $x]} err

rename unknown handle_unknown_label
rename _old_system_unknown unknown

但对于 eval,我仍然得到相同的行为,并打印以下错误:

procedure unknown is a protected proc and will not get renamed
procedure unknown is a protected proc and will not get overriden
procedure unknown is a protected proc and will not get renamed
procedure unknown is a protected proc and will not get overriden

最佳答案

我想我说的是显而易见的,但是 eval 'ing 文件很危险:任何用户都可以嵌入 [exec whatever they wish]进入这样的文件。

更好的是阅读这些“标签”并使用巨大的开关或哈希图或其他任何东西来执行预定的命令。捕获不存在的“标签”也不再是问题。

关于tcl - 防止 Tcl 在未知命令上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com