1

私は Java を使用して、JRE にバンドルされているデフォルトの Rhino を使用して、JavaScript で記述された単純なスクリプトを実行しています。アプリケーション内とコマンドライン バージョンから同じスクリプトを使用できるようにしたいので、使用できませんjava.lang.System.exit(3)(ホスト アプリケーションが途中で終了してしまいます)。セキュリティ マネージャーを使用してブロックすることはできません。セキュリティ マネージャが有効な場合のパフォーマンスの問題。

スクリプトを終了するための JavaScript の関数はおそらくありますか?

4

2 に答える 2

2

いいえ、ありません。ただし、次のような例外を作成できます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);
}
于 2011-06-17T01:16:51.110 に答える
1

ここにアイデアがあります:

スクリプトを関数でラップして呼び出します。この関数から戻ると、スクリプトが終了します。

//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
}
于 2011-10-19T15:49:50.083 に答える