2012-01-21 3 views

ответ

3

Команда error сама ничего не пишет нигде, кроме результата Tcl. Что это такое Фактически делает это исключение (типа «ошибка», TCL_ERROR на уровне API C). Код, который префикс с ним «Error: », является стандартным обработчиком аварийного восстановления, но вы можете использовать его самостоятельно, используя ваш основной скрипт catch, чтобы уловить любой результат и решить, что с ним делать (или try … с 8,6 года, что проще для использования при улавливании определенных проблем).

if {[catch {source realscript.tcl} msg]} { 
    # Caught an error! 
    puts stderr "Oh noes! Teh errorz iz atakkin! $msg" 
    puts stderr $::errorInfo 
    exit 1 
} 

OK, если вы используете 8.5, то немного лучший способ написать это:

if {[catch {source realscript.tcl} msg resultdict]} { 
    # Caught an error! 
    puts stderr "Oh noes! Teh errorz iz atakkin! $msg" 
    puts stderr [dict get $resultdict -errorinfo] 
    exit 1 
} 

Там много других интересных вещей в словаре результат, который вы могли бы или может быть неинтересен.

Смежные вопросы