Tcl/Tk:実行時のエラーを捕捉したい
Imoto
Altair Employee
HyperMeshやHyperView向けのTcl/Tkスクリプト内で、エラーが発生しても無視して継続させたい場合は、一般的なTclコマンドの『catch』を用います。
例えば、foreachなどを使って、各コンポーネント名から、アンダーバー(_)以降を消した名前に変更したい場合、「コンポーネントによってはアンダーバーが付いていない名前もあるかも知れない」ということがあるかも知れません。
実際、HyperMeshでは*renamecollectorコマンドを使って、「旧名」「新名」を引数で指定しますが、旧と新が同じ名前の場合、エラーとなりそこで処理が中断します。
何か処理に不安があるのであれば、『catch』を追加しておくと、エラーを無視して継続をさせることができます。
-例-
foreach compname [hm_entitylist comps name] {
set newname [lindex [split $compname _] 0];
catch {*renamecollector components $compname $newname};
}
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
図.実行前 図.実行後
0