diff options
Diffstat (limited to 'doc/lispref/control.texi')
-rw-r--r-- | doc/lispref/control.texi | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index e74f3e198bf..c23c93300a6 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -8,11 +8,11 @@ @cindex special forms for control structures @cindex control structures - A Lisp program consists of expressions or @dfn{forms} (@pxref{Forms}). -We control the order of execution of these forms by enclosing them in -@dfn{control structures}. Control structures are special forms which -control when, whether, or how many times to execute the forms they -contain. + A Lisp program consists of a set of @dfn{expressions}, or +@dfn{forms} (@pxref{Forms}). We control the order of execution of +these forms by enclosing them in @dfn{control structures}. Control +structures are special forms which control when, whether, or how many +times to execute the forms they contain. @cindex textual order The simplest order of execution is sequential execution: first form @@ -891,9 +891,8 @@ establishing an error handler, with the special form @noindent This deletes the file named @var{filename}, catching any error and -returning @code{nil} if an error occurs@footnote{ -Actually, you should use @code{ignore-errors} in such a simple case; -see below.}. +returning @code{nil} if an error occurs. (You can use the macro +@code{ignore-errors} for a simple case like this; see below.) The @code{condition-case} construct is often used to trap errors that are predictable, such as failure to open a file in a call to @@ -949,6 +948,13 @@ The effect of @code{debug} here is only to prevent given error will invoke the debugger only if @code{debug-on-error} and the other usual filtering mechanisms say it should. @xref{Error Debugging}. +@defmac condition-case-unless-debug var protected-form handlers@dots{} +The macro @code{condition-case-unless-debug} provides another way to +handle debugging of such forms. It behaves exactly like +@code{condition-case}, unless the variable @code{debug-on-error} is +non-@code{nil}, in which case it does not handle any errors at all. +@end defmac + Once Emacs decides that a certain handler handles the error, it returns control to that handler. To do so, Emacs unbinds all variable bindings made by binding constructs that are being exited, and @@ -1122,6 +1128,13 @@ Here's the example at the beginning of this subsection rewritten using @end smallexample @end defmac +@defmac with-demoted-errors body@dots{} +This macro is like a milder version of @code{ignore-errors}. Rather +than suppressing errors altogether, it converts them into messages. +Use this form around code that is not expected to signal errors, but +should be robust if one does occur. Note that this macro uses +@code{condition-case-unless-debug} rather than @code{condition-case}. +@end defmac @node Error Symbols @subsubsection Error Symbols and Condition Names |