Как отловить ошибку на экране в переменную в TCL, используя catch

Чтобы исправить ошибку на экране, хотя поймать, например,

   puts $c
   #error on terminal : can't read "c": no such variable

   catch {puts $c} err
   puts $err # value of err 1

Есть ли способ отловить фактическое сообщение об ошибке в TCL, кроме сигнала в переменной err.

1 ответ

Решение

Да. Прочитайте ::errorInfo или же ::errorCode глобальные переменные для получения трассировки стека и машинно-разборный трехэлементный список "POSIX error", соответственно.

Начиная с Tcl 8.5, также можно передавать имя словаря catch после имени переменной для получения результата, и этот словарь будет заполнен большей частью того, что можно получить с помощью "классических" переменных ошибок, которые я описал выше, и многого другого.

Это все объясняется в catch страница справочника.

Другие вопросы по тегам