Предотвратить сбой Tcl при выполнении неизвестной команды

Я выполняю eval для содержимого файла. Файл состоит из этикеток, которые я разбираю. У каждой строки есть метка, и у меня есть proc , определенный для каждой метки, так что eval завершается успешно. Однако иногда пользователи добавляют новые метки, а затем команда eval не работает из-за неизвестной команды.

Есть ли способ предотвратить сбой Tcl при попытке eval неизвестной команды ?
В идеале это должно позволить мне заменить свое поведение, определенное мной - например, указать ошибку и продолжить с eval .


РЕДАКТИРОВАТЬ :

К сожалению, я могу использовать только Tcl 8.4 .
Я попытался сделать следующее, , как предлагается здесь :

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 , и он выводит следующие ошибки:

неизвестная процедура является защищенной процедурой и не будет переименована
неизвестная процедура является защищенной процедурой и не будет отменена
неизвестная процедура является защищенной процедурой и не будет переименована
неизвестная процедура является защищенной процедурой и не будет отменена

6
задан Amir Rachum 11 May 2011 в 10:14
поделиться