エラーメッセージ - どの行ですか?JMPは、ユーザーがコード内のエラーを見つけるのに役立ちます。コード内で未解決の名前が使用されている場合、JMPは評価を停止し、エラーのあるコード行を示すエラーメッセージを表示します。
print(1);
result = x + zzz_missing;

コードを少し変更してみましょう。JMPがこのコードを実行すると
myFunc = Function( {x},
{},
result = x + zzz_missing;
Return( result );
);
myFunc( 3 );
再度エラーメッセージが返されます:

しかし、これはコードの3行目でxが定義されている箇所を指しています。これは非常に驚くべきことです。エラーは4行目で発生しました。ユーザーが結果を保護するための名前 expr()を忘れたため、JMPが誤って式を評価してしまったのです。
この動作については別の投稿 ( エラー トレース: JMP が「支援」を試みる) で既に説明しましたので、次の驚くべき点に直接進みます。
実際、このコードのエラー メッセージはさらに驚くべきものです。
myFunc = Function( {x},
{Default Local},
result = x + zzz_missing;
Return( result );
);
myFunc( 3 );

-> ラインに関する情報がありません!?! - 間違ったものさえありません。
なぜ?
自動化とスクリプトRe: エラー メッセージ - どの行ですか?Try() と同じ制限: コード行に関する情報なし
Try(
result = zzz_missing;
Print( 1 );
,
Print( exception_msg )
);

Re: エラー メッセージ - どの行ですか?コマンドはありますか
- ログキャプチャ()や試す()のように、囲まれた式にエラーがあっても停止しません
- エラーを生成するコード行を返しますか?
Re: エラー メッセージ - どの行ですか?ログキャプチャ
スクリプト インデックスに従って、ログへの出力をキャプチャし、文字列として返します。

しかし、それだけではありません!
これは試す()のように動作し、評価された式内で致命的なエラーが発生した後でもコードの実行を続行できます。
log=Log capture(
result = zzz_missing;
print(1)
);
Print(2);
Show(log)
印刷(1)はスキップされ、 印刷(2)が実行されます。

ほぼ完璧です。残念ながら(!)、エラーが発生したコード行を記述し忘れています。
Re: エラー メッセージ - どの行ですか?ああ: ヴィンス・ファラー著「エラータイプ」

ライアン・ギルモア 、投票の希望を再度有効にしてください。
@Ben_BarrIngh 、 @russ_wolfinger 、参考までに。
Re: エラー メッセージ - どの行ですか?このリクエストを次のリクエストと組み合わせることもできます:
エラー時のログにおける JSL スタック トレースの改善
Re: エラー メッセージ - どの行ですか?ところで、例外メッセージで何が返されるか知っている人はいますか?

1?
2?
Re: エラー メッセージ - どの行ですか?JSL コードは「子」実行をトリガーできますか? 子実行は、エラー行に関するエラー メッセージを表示して終了する可能性があります。
そして、子の実行が終了したとき、または子の実行が終了したときに、メイン コードは存続し、さらに実行されますか?
Re: エラー メッセージ - どの行ですか?// demo command
MyExpr = Expr(
Print( 1 );
z = 5;
x = xyz;
Print( 2 );
);
stopnow = 0; // if there is an error, don't execute subsequent blocks of code
summary = "";
// execute blocks of code and collect replies and error messages
For Each( {part, line}, Name Expr( myExpr ),
Try(
Eval( Name Expr( part ) );
new = "";
,
new = "part " || Char( line ) || ": " || Char( Name Expr( part ) ) || "\!n" || Char( exception_msg );
stopNow = 1;
);
Wait( 0 );
summary = summary || new || (tmp = Char( Get Log( -1 )[1] ) ; If( tmp == "/*:", "", "\!N" || tmp || "\!N" ));
Clear Log();
If( stopnow, break() );
);
Show(summary);

コード ブロックごとに 1 回以下の応答がある単純なコードを想定します。
より複雑なコードでも動作するように簡単に拡張できます。