Вы также хотели бы перехватывать ошибки из open
(кстати, вам нужно открыть файл для записи, чего вы не делаете), а не только glob
.
Что-то вроде :
# You don't use value in your posted code. Typo or something?
foreach value $list {
try {
set list1 [glob -type f "/a/$food/$toys/*"]
set file1 [open "$food/$toys/abc.txt" w]
puts $file1 [join $list1 \n]
close $file1
} on error {msg} {
puts stderr "Error while processing '$value': $msg"
}
}
будет обрабатывать оба случая и любые другие ошибки, которые могут возникнуть.