まずは通常の動作。
上のように、スクリプトエディタの History でエラー時ライン番号を表示する設定をしている場合に、下のスクリプトを実行すると、
global proc assert() { warning "warning:hogehoge"; error "error:hogehoge"; print "hogehoge"; }
こんな風に、スクリプトのパスと行番号に続いてメッセージが表示されます。
で、このスクリプトパスと行番号を出さないようにする為に、今まではひと手間かけていました。
こんな感じ。
global proc assert2() { int $buf=`commandEcho -q -ln`; commandEcho -ln off; warning "warning:hogehoge"; catch(`error "error:hogehoge"`); commandEcho -ln $buf; print "hogehoge"; }
commandEcho というのが Line number in errors のこと。
3行目でバッファリングしておいて一旦オフにします。
error コマンドでスクリプトが停止してしまわないように catch も使用しています。
コレを実行すると Line number in errors にチェックが入っていても、スクリプトパスと行番号が表示されなくなります。
catch のおかげで print コマンドも実行されていますね。
ま、意外と面倒です。
で、warning と error に新しく追加されたオプション。
-noContext(-n) 警告メッセージにコンテキスト情報を出さないようにできるらしい。
これを使ってみます。
global proc assert3() { warning -noContext "warning:hogehoge"; error -noContext "error:hogehoge"; print "hogehoge"; }
その結果、
commandEcho の操作をしなくても行番号が表示されなくなりました!
さすがに error コマンドはスクリプトが止まってしまうので catch は使用しないと駄目ですが、便利かも。
0 件のコメント:
コメントを投稿