Rev 78076 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/on.exit.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2020 R Core Team% Distributed under GPL 2 or later\name{on.exit}\alias{on.exit}\title{Function Exit Code}\description{\code{on.exit} records the expression given as its argument as needingto be executed when the current function exits (either naturally or asthe result of an error). This is useful for resetting graphicalparameters or performing other cleanup actions.If no expression is provided, i.e., the call is \code{on.exit()}, thenthe current \code{on.exit} code is removed.}\usage{on.exit(expr = NULL, add = FALSE, after = TRUE)}\arguments{\item{expr}{an expression to be executed.}\item{add}{if TRUE, add \code{expr} to be executed after any previouslyset expressions (or before if \code{after} is FALSE); otherwise (thedefault) \code{expr} will overwrite any previously set expressions.}\item{after}{if \code{add} is TRUE and \code{after} is FALSE, then\code{expr} will be added on top of the expressions that were alreadyregistered. The resulting last in first out order is useful for freeingor closing resources in reverse order.}}\details{The \code{expr} argument passed to \code{on.exit} is recorded withoutevaluation. If it is not subsequently removed/replaced by another\code{on.exit} call in the same function, it is evaluated in theevaluation frame of the function when it exits (including duringstandard error handling). Thus any functions or variables in theexpression will be looked for in the function and its environment atthe time of exit: to capture the current value in \code{expr} use\code{\link{substitute}} or similar.If multiple \code{on.exit} expressions are set using \code{add = TRUE}then all expressions will be run even if one signals an error.This is a \sQuote{special} \link{primitive} function: it onlyevaluates the arguments \code{add} and \code{after}.}\value{Invisible \code{NULL}.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth & Brooks/Cole.}\seealso{\code{\link{sys.on.exit}} which returns the expression stored for useby \code{on.exit()} in the function in which \code{sys.on.exit()} isevaluated.}\examples{require(graphics)opar <- par(mai = c(1,1,1,1))on.exit(par(opar))\dontshow{par(opar)}}\keyword{programming}