故意引發 JSL 中的錯誤我一直在論壇和腳本索引中搜索執行此操作的方法,但沒有找到任何可以完成我想做的事情。我正在尋找與 Python 的“Raise”函數具有類似功能的東西。或者與 Try Throw 語句本質上相同的功能,但不會引發 JSL 異常。
例如,我正在編寫一個函數,要求用戶以字符串的形式輸入日期。為了防止錯誤,我想在函數中使用輸入之前檢查輸入。
Example Function = Function({start_date,end_date},
chk1 = Is String(start_date);
If(chk1 == 0, //Raise some error here);
);我認為我可以通過 Show("Error message") 和 Break() 序列完成我想要的任務,但我想知道是否有任何本機 JSL 方法可以完成此任務。
回复:在 JSL 中故意引發錯誤您可以使用 Throw 來引發錯誤。在捕獲用戶輸入錯誤的上下文中,您可以使用帶有 OnValidate 消息的模式窗口:
NewWindow("Demo", <<MODAL></MODAL>
回复:在 JSL 中故意引發錯誤我使用模態窗口的組合來為用戶提供錯誤消息,並拋出異常來終止執行。
Example Date Check = Function({start_date,end_date},
chk1 = Is String(start_date);
If (!chk1 == 0,
emsg = "Invalid start date [" || char(start_date) || "]";
ew = new window("Invalid date", << modal(),
text box(emsg),
);
throw(emsg);
);
chk2 = Is String(end_date);
If (!chk2 == 0,
emsg = "Invalid end date [" || char(end_date) || "]";
ew = new window("Invalid date", << modal(),
text box(emsg),
);
throw(emsg);
);
);
example date check(today(), today());
example date check("31-Feb-2018", today());回复:在 JSL 中故意引發錯誤您可以使用扔()無需嘗試。 我認為它類似於Python中的Raise()。
//:*/
show("Here");
throw("This didn't work");
show("Here 2");
/*:
"Here";
This didn't work
回复:在 JSL 中故意引發錯誤使用 Try() 函數,然後檢查它的結果