2016-07-14 2 views
1

こんにちは私は現在IBM Spssを使用していますが、例外が発生したコード行を取得できるようにコードが例外をスローする方法があるかどうかは疑問でした?私は実行された行のスタックにアクセスし、そこからこの情報を引き出すために行番号を取得できますか?すべてのアイデアは素晴らしいだろう事前にありがとう!例についてはSpss(mrScriptBasic)エラー処理エラーが発生したコードを取得する

は:

Dim x, y, z 
On Error Goto ErrorHandler 
x = 30 
y = 0 
z = x/y 'would like to grab this code since this is where the error occurred 
Exit 


ErrorHandler: 
debug.Log(Err.Description + _ 
" error occurred on line number " + _ 
CText(Err.LineNumber)) 

答えて

2

いいえ、あなたはマクロ展開を可能にし、独自のインデックスを維持しない限り、実際のコードに行番号をマップする方法はありませんなど

あなたは何ができますかしかし、コードをブロックで送信し、そのブロックの例外をキャッチすると、ブロックの位置が絞り込まれます。制限内では、各行が独自のブロックである場合、エラーが発生した場所を正確に知ることができます。

+0

ありがとうございます@JKP私はブロックについて考えて例外をキャッチしていますが、私がしようとしていることは、エラーが発生した実際のコードを取得する必要があります。あなたはこれをマクロ展開で可能にすることができました。私自身のスタックを作成し、ここで追跡していますか?もっと情報をくれてくれますか? – paul590

+1

マクロがない場合は、コマンドの配列を保持して1つずつ実行するだけで十分ですが、ストリームにINSERTコマンドまたはINCLUDEコマンドがある場合は、INSERT/INCLUDEファイルの内容ではなく、これらのファイルの内容を傍受して読み込み、コマンドを解析する必要があります。簡単ではありません。 – JKP

+1

マクロを使用すると、SET MPRINT ONを実行し、ジャーナルファイルからコマンドをスクラップできます。これは、おそらく、エラーの場合にジャーナルファイルの末尾を見れば、実際には最良の戦略かもしれないと私は思う。ジャーナリングファイルは、ジャーナリングがオンであると仮定して、すべての実際の構文を記録し、ファイルはすべてのコマンドの後でディスクにフラッシュされるので、常に最新です。エラーが発生した場合の内容は次のとおりです。 – JKP

関連する問題