2012-01-07 20 views
1

私はキーワードtryがSpecmanにするために使用されているものを知りたいと下記のコードスニペットでは特にその使い方になります。Specman-eのtry {};

try { 
    unpack(packing.low,lob,pkt); 
} else{ 
    message(LOW, “Uh-oh!”){print lob using HEX;}; 
    message(LOW,”bad unpack!!!”); 
}; 

答えて

0

tryelseはSpecmanのexception handling構築物で。 tryblockにエラーが作成された場合、ブロックtryの代わりにelseブロックが直ちに実行され、エラーは抑制され、の出力は印刷されませんとなります。

この場合、lobのビット数がpktよりも多い場合、「物理フィールド」がある場合、アンパックはエラーを生成します。その場合、Specmanランタイムはelseブロックにジャンプし、元のunpackエラーを出力する代わりにlobデータ構造を出力します。 「物理フィールド」とは何か、どのように使用されているかについて、ドキュメントを見てください。これらは、Specmanの%,pack、およびunpack構成の動作と具体的に相互作用する奇妙な構造である。 pktの物理フィールドはpktの「物理フィールド」に先行する%修飾子で宣言されます。

+0

本当に私の原因を助けた説明に感謝します – smashash

1

tryとifは類似しています。条件が真の場合に真のブロックを実行する場合は、 とし、そうでない場合はfalseを実行します。 同様に、真のブロックにエラーがあり、elseブロックに切り替える場合も試してください。