嵌入Rhino时,如何从中返回退出代码
How do you return an exit code from Rhino when embedding it?
我使用Java运行使用JRE捆绑的默认Rhino编写的JavaScript简单脚本。我希望能够在应用程序和命令行版本中使用相同的脚本,因此我不能使用java.lang.System.exit(3)
(它会提前退出主机应用程序。)我不能使用安全管理器来阻止它,因为当安全管理器生效时,人们会抱怨性能问题。
JavaScript中是否有一些用于退出脚本的函数?
不,没有。但是您可以创建一个名为ExitError
:的异常
public class ExitError extends Error {
private final int code;
public ExitError(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
现在,在应用程序的脚本运行程序中,您可以执行以下操作:
public int runScript() {
try {
// Invoke script via Rhino
} catch (ExitError exc) {
return exc.getCode();
}
}
在命令行版本中:
public static void main(String[] args) {
try {
// Invoke script via Rhino
} catch (ExitError exc) {
System.exit(exc.getCode());
}
}
此外,在JS代码中,编写一个包装器函数:
function exit(code) {
throw new ExitError(code);
}
这里有一个想法:
将脚本封装在函数中并调用它。从该函数返回将退出脚本。
//call main
main();
//The whole work is done in main
function main(){
if(needToExit){
//log error and return. It will essentially exit the script
return;
}
//your script goes here
}
相关文章:
- 返回时退出功能
- 返回不会退出 javascript 中的递归函数
- if-else-if JavaScript 返回 true 并退出,无论输入如何
- 退出函数并再次调用自身而不返回 undefined
- 在鼠标退出后,JQuery 无法将某些内容返回到其原始位置
- 如何以空值退出/返回类
- JavaScript 退出 for 循环而不返回
- 如果在鼠标悬停事件中触发了鼠标关闭,则立即返回,并且不执行链接的鼠标退出事件
- 当循环退出而不是返回到循环 -Javascript
- 如何链接到url,然后在退出时返回到原始url
- jQuery UI-当退出可丢弃时返回到原始位置
- 退出系统后不要返回链接
- 如何退出each()循环并提前从外部函数返回
- MVC浏览器退出MVC后返回按钮问题
- 鼠标退出后返回到原始图像源
- 退出函数后,var的值返回空
- For循环返回won't退出
- Javascript -防止返回按钮Android退出浏览器
- 嵌入Rhino时,如何从中返回退出代码
- Bash 脚本,用于从 NodeJs 脚本返回退出代码