2013-03-22 1 views
0

Для Grep ошибки на экране, хотя поймать напримерКак поймать ошибку на экране в переменный в TCL с помощью поймать

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

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

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

ответ

3

Да. Прочитайте глобальные переменные ::errorInfo или ::errorCode, чтобы получить трассировку стека и трехсекционный список «POSIX error», соответствующий машинам.

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

Все это поясняется в the catch manual page.

+1

В tcl 8.6 вы даже получили команду ['try'] (http://www.tcl.tk/man/tcl8.6/TclCmd/try.htm), которая также может быть полезна. Использование 'try' проще, чем выглядит (обычный' try {...} на ошибке msg {puts $ msg} '). Также обратите внимание, что Tcl строит в отличие от Java или .Net стек ошибок при разматывании. –