У Tcl достаточно хороший самоанализ на процедурах. Это позволяет вам переписать процедуру, чтобы добавить еще немного кода:
# Assume there are no defaults; defaults make this more complicated...
proc N [info args N] [concat {
# Use 'ne' for string comparison, '!=' for numeric comparison
if {$arg1 ne "GOOD VALUE"} {
error "arg1 is bad"
# The semicolon is _important_ because of the odd semantics of [concat]
};
} [info body N]]
ОК, это не единственный способ сделать это - ответ Эрика ближе к тому, как я обычно обертываю команду, и у него также есть преимущество работы с не процедурными командами - но это решение имеет преимущество привязывать код аккуратно и аккуратно, чтобы потом было очень мало ошибок. Он также не вводит дополнительные кадры стека в какие-либо следы ошибок, что помогает упростить отладку.