Jump to content
Sign in to follow this  
Imoto

Tcl/Tk:実行時のエラーを捕捉したい

Recommended Posts

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};
}

 

before.jpg  after.jpg

図.実行前                                     図.実行後

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...