NaviServer - programmable web server

[ Main Table Of Contents | Table Of Contents | Keyword Index ]

# ns_adp_abort(n) 4.99.8 naviserver "NaviServer Built-in Commands"

## Name

ns_adp_abort - Stop processing of the current ADP and discard queued output

## Table Of Contents

## Synopsis

- ns_adp_abort ?retval?

## Description

This command stops processing of the current ADP by throwing a Tcl error along with an "ADP exception" of ADP_ABORT. This has the side-effect of truncating the current ADP's output buffer so that no queued output for the current ADP is sent to the client. However, if a streaming script was processed before ns_adp_abort was called, the data will already have been output. Also, if any commands that cause output, such as ns_return or ns_write for example, were called before ns_adp_abort, then their output will already have been output also. The optional retval becomes the return value of the ADP if specified, otherwise an empty string is returned.

## COMMANDS

ns_adp_abort ?retval?

## EXAMPLES

       # The ns_adp_abort after ns_returnredirect ensures no further ADP
       # processing happens except the redirect itself.

       ns_returnredirect http://next-scripting.org
       ns_adp_abort

## Notes

Because it's possible to catch the ns_adp_abort exception, it is possible for code to execute after an ns_adp_abort in the current adp block. However, all subsequent adp blocks are guaranteed to not get evaluated. For example:

     <%
        catch { ... some code that executes ns_adp_abort ... }
        if {[ns_adp_exception] eq "abort"} {
            ... some cleanup code
        }
       %>
       <% ... this next block will NOT be evaluated even though ns_adp_abort is caught in the prior block %>

## See Also

ns_adp, ns_adp_abort, ns_adp_break, ns_adp_close, ns_adp_ctl, ns_adp_dump, ns_adp_flush, ns_adp_return, ns_adp_stream

## Keywords

ADP