嘗試()和拋出()... 我只是不明白我確實嘗試過(沒有雙關語)使用 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: