Error Handling

Check the program before running it. Invalid syntax, unknown names, and mismatched arguments must be fixed in source; try/catch does not handle those diagnostics.

Catch an operation failure

Use try/catch around work that may fail, such as a request timing out. Put it inside a loop to keep a single failed request from stopping the other items.

input endpoints: list<url>
for endpoint in endpoints {
    try {
        response = http.get(endpoint, timeout=3s)
        expect response.status == 200, "Unexpected HTTP status"
    } catch error {
        print(`${error.code}: ${error.message}`)
    }
}

The caught error has code and message fields. Codes depend on the operation; use the message for context. You can omit the variable with catch { ... } when you do not need its details.

An uncaught runtime failure stops the run. Catch expected operation failures where you can recover; do not treat catch as protection against every failure or run limit.

Failed checks are different

A false expect records a failed check, or a finding when severity is supplied, and continues. It does not enter catch merely because the condition is false. Evaluating the condition or making the preceding request can still fail.

Improve team velocity with
better security and privacy.