2017年3月30日木曜日

warningとerrorにオプションが新設されたみたい

なんか、warningerror に新しいオプションが追加されたようです。

まずは通常の動作。

上のように、スクリプトエディタの 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 コマンドも実行されていますね。
ま、意外と面倒です。

で、warningerror に新しく追加されたオプション。
-noContext(-n) 警告メッセージにコンテキスト情報を出さないようにできるらしい。
これを使ってみます。

global proc assert3()
{
    warning -noContext "warning:hogehoge";
    error -noContext "error:hogehoge";
    print "hogehoge";
    
}



その結果、

commandEcho の操作をしなくても行番号が表示されなくなりました!
さすがに error コマンドはスクリプトが止まってしまうので catch は使用しないと駄目ですが、便利かも。



0 件のコメント:

コメントを投稿