try() と throw()... ただ分かりません実際に try() と throw() を使用してみました (しゃれではありません) が、読んだとおりに動作しないようです。
列「値」と「パラメーター」を含むデータセットがあります。 スクリプトを実行して、このデータセットに対してさまざまな操作を実行したいのですが、これはそれらの列が存在する場合に限ります。 これらのインスタンスで try() と throw() を使用する方法、またはそもそも使用する必要があるかどうかを誰かが私に説明できますか?
スクリプトは次のようにすべきでしょうか?
mydt=current data table();
if (
try(
Column (mydt, "Value") & Column (mydt, "Parameter"),
throw("Value and Parameter columns do not exist");
);
rest of script;
);
それともこれ?
mydt=current data table();
try(
Column (mydt, "Value") & Column (mydt, "Parameter");
rest of script,
throw("Value and Parameter columns do not exist");
);
Re: try() と throw()... ただ分かりません皆さんに感謝したいと思います。 あなたの助けのおかげで、try() と throw() をよりよく理解することができ、スクリプトの複数の領域でそれらをうまく使用できるようになりました。
どうもありがとう、
ヘザー
Re: try() と throw()... ただ分かりませんTry を使用する代わりに、列の存在を明示的に確認できます。
dt = open("$sample_data\Big Class.jmp");
col_list = dt << get column names(string);
if (!contains(col_list, "Value") | !contains(col_list("Parameters")),
nw = new window("Missing columns", << modal(),
text box("Value and Parameter columns do not exist")
);
throw("Value and Parameter columns do not exist");
);
Re: try() と throw()... ただ分かりませんTrow() 関数をこの方法で使用すると、スクリプトの実行が停止され、引用符で囲まれた文字列がログに書き込まれます。 さらに、Throw() が Window アクションから生成された場合、メッセージとともに警告ウィンドウも表示されます。
これらの列が存在しないときにスクリプトの実行を停止したい場合は、Throw() 関数を使用して停止できます。 Try 内に残りのスクリプトを含めることも、try 後にスクリプトを含めることもできます。いずれにしても、エラーが発生するとスクリプトは実行を停止します。
また、列が存在する場合でも、以下のコードのセクションを使用すると失敗します。これは、列を AND (&) して何かを返すことができないためです。 エラー メッセージは「'And' のアクセスまたは評価で引数を数値 [または行列] に変換できません」です。
Column (mydt, "Value") & Column (mydt, "Parameter");
以下の例では、Big Class テーブルが開かれたときに「残りのスクリプト」をログに出力し、開いていない場合はメッセージをログにスローします。 存在するかどうかをテストするために、両方の列への参照を含めました。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
Try(
Column( dt, "height" );
Column( dt, "weight" );
,
Throw( "height and weight columns do not exist" )
);
Print( "rest of script" );
Re: try() と throw()... ただ分かりませんあなたが本当にやりたいことは次のとおりだと思います。
If(
Try( Column( mydt, "Value" ) << get name, "" ) == "" |
Try( Column( mydt, "Parameter" ) << get name, "" ) == "",
Throw( "Value and Parameter columns do not exist" ),
rest of script
);
Try 関数を使用すると、失敗しても処理を停止しない操作を実行できます。また、Try が失敗条件を見つけた場合に返される 2 番目のパラメーターを設定することもできます。
したがって、上記のスクリプトは、変数「value」が存在しない場合は「」を返し、変数「Parameter」が存在せず、OR「|」がある場合は「」を返します。句が使用されている場合、どちらかの変数が見つからない場合、全体的な比較の結果は true になります。結果が true の場合は Throw() 関数が実行され、それ以外の場合はコードの残りの部分が実行されます。
Re: try() と throw()... まったく理解できませんあなたの答えはとても良いです!ありがとう〜厉害了:thumbs_up: