Sample code for 30+ languages & platforms
Java Requires Chilkat v11.4.0+

Prevent JavaScript Infinite Loops

See more JavaScript Examples

Demonstrates how prevent infinite loops or prevent the JavaScript from running for a longer amount of time than allowed.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Js;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This is the JavaScript we'll run:

        // console.log('Starting infinite loop...'); while(true) {};

        StringBuilder sbScript = new StringBuilder();
        sbScript.append("console.log('Starting infinite loop...'); while(true) {};");

        Js js = new Js();

        // Set a limit on the amount of time (in seconds) the script is allowed to run.
        // If the JavaScript takes longer than this amount of time, then Chilkat kills the script without crashing the host program.
        // The default value of TimeoutSeconds is 0, which indicates no limit.
        // For this example, set a limit of 2 seconds.
        js.setTimeoutSeconds(2);

        JsonObject result = new JsonObject();
        result.setEmitCompact(false);

        // Run the script..
        try {
            js.eval(sbScript, result);
        } catch (ChilkatException e) {
            // Examine the result for an exception.
            System.out.println(result.emit());

            // The result contains this:

            //     {
            //       "exception": {
            //         "message": "interrupted - JavaScript exceeded the Chilkat.Js.TimeoutSeconds",
            //         "stack": [
            //           {
            //             "func": "<eval>",
            //             "file": "<input>",
            //             "line": 1,
            //             "col": 8
            //           }
            //         ]
            //       }
            //     }

            // Also examine the LastErrorText.
            System.out.println(e.getLastErrorText());
            return;
        }

        // We should never get here..
        System.out.println("Succeeded.");
        System.out.println(result.emit());
    }
}
JavaScript
console.log('Starting infinite loop...');
while(true) {};