Я выполняю 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
, и он выводит следующие ошибки:
неизвестная процедура является защищенной процедурой и не будет переименована
неизвестная процедура является защищенной процедурой и не будет отменена
неизвестная процедура является защищенной процедурой и не будет переименована
неизвестная процедура является защищенной процедурой и не будет отменена