尝试()和抛出()... 我只是不明白我确实尝试过(没有双关语)使用 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");
);
回复:try() 和 throw()... 我只是不明白我要感谢大家。 在您的帮助下,我能够更好地掌握 try() 和 throw() 并在我的脚本的多个区域中成功地使用它们。
非常感谢,
希瑟
回复: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");
);
回复:try() 和 throw()... 我只是不明白当以这种方式使用时,Trow() 函数将停止脚本执行并将带引号的字符串写入日志。 此外,如果 Throw() 是从 Window 操作生成的,则还将出现一个带有消息的警报窗口。
如果您想在这些列不存在时停止执行脚本,可以使用 Throw() 函数来执行此操作。 您可以将脚本的其余部分包含在 Try 中或在 try 之后,无论哪种方式,脚本都会在发生错误时停止执行。
此外,即使列确实存在,使用下面的代码部分也会失败,因为您不能将列与 (&) 一起返回任何内容。 错误消息是“在访问或评估‘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" );
回复: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 发现失败条件,该参数将返回。
因此,如果变量“value”不存在,上面的脚本将返回“”,如果变量“Parameter”不存在并且由于 OR“|”,则返回“”。使用子句时,如果没有找到任何一个变量,则整体比较的结果将为 true。如果结果为真,则执行 Throw() 函数,否则执行其余代码。
回复:try() 和 throw()……我只是不明白你的回答很好!谢谢~厉害了:thumbs_up: