gpt4 book ai didi

tcl - 如何检查 Tcl 命令没有引发异常或错误?

转载 作者:行者123 更新时间:2023-12-02 15:23:44 32 4
gpt4 key购买 nike

我有以下程序:

proc myexec { args } {
info_msg "Executing shell command: $args"

set catch_res [catch {eval exec $args} res]

if { $catch_res != 0 } {
error_msg "Failed in command: $args"
error_msg "$res"
}

return $catch_res
}

它仅检查 Unix 命令,不适用于 Tcl 命令。我如何更改此过程以便它可以与 Tcl 命令一起使用?

例如,如果我想检查以下命令的计算是否没有错误:

set object1 $object2

open $filename r

最佳答案

最简单的方法是这样做:

proc myeval { args } {
info_msg "Executing Tcl command: $args"

set catch_res [catch $args res]

if { $catch_res != 0 } {
error_msg "Failed in command: $args"
error_msg "$res"
}

return $res
}

在这里,我们将 catch {eval exec $args} res 替换为 catch $args res (加上一些装饰性的东西),这将导致对参数进行求值作为脚本无需进一步替换。你可以像这样使用它:

myeval foo bar $boo

或者,如果您也在 catch 中进行替换,那么您最好编写这个更复杂的版本:

proc myeval { script } {
info_msg "Executing Tcl command: [string trim $script]"

set catch_res [catch [list uplevel 1 $script] res]

if { $catch_res != 0 } {
error_msg "Failed in command: [string trim $script]"
error_msg "$res"
}

return $res
}

在这种情况下,您可以这样调用它:

myeval {
foo bar $boo
}

关于tcl - 如何检查 Tcl 命令没有引发异常或错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7344444/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com