我在做eval
上的文件內容。該文件是由我解析的標籤製成的。每行都有一個標籤,並且我爲每個標籤定義了一個proc
,以便eval
成功。但是,有時用戶會添加新標籤,然後eval
命令因命令未知而失敗。防止Tcl在未知命令上崩潰
有沒有辦法可以防止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
相同的行爲,並印刷了以下錯誤:
程序未知是受保護的過程,不會被重命名
程序未知是一個專業程序tected proc和將不會重寫
程序未知是受保護的proc和不會獲得改名
程序未知是受保護的proc和將不會重寫
不適用,但如果您正在閱讀文件並對其進行評估,那麼您可以直接輸入文件,而不是? – 2011-05-11 10:51:06
這個Tcl解釋器在什麼環境下?我不熟悉那個「受保護的proc」錯誤。 – 2011-05-11 12:57:39
@glenn有趣。所以這可能是我公司禁用的東西? – 2011-05-11 13:35:57