declare smobs in alloc.c
[bpt/emacs.git] / doc / lispref / control.texi
CommitLineData
b8d4c8d0
GM
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
ba318903 3@c Copyright (C) 1990-1995, 1998-1999, 2001-2014 Free Software
ab422c4d 4@c Foundation, Inc.
b8d4c8d0 5@c See the file elisp.texi for copying conditions.
ecc6530d 6@node Control Structures
b8d4c8d0
GM
7@chapter Control Structures
8@cindex special forms for control structures
9@cindex control structures
10
31cbea1d
CY
11 A Lisp program consists of a set of @dfn{expressions}, or
12@dfn{forms} (@pxref{Forms}). We control the order of execution of
13these forms by enclosing them in @dfn{control structures}. Control
14structures are special forms which control when, whether, or how many
15times to execute the forms they contain.
b8d4c8d0 16
13e31e2b 17@cindex textual order
b8d4c8d0
GM
18 The simplest order of execution is sequential execution: first form
19@var{a}, then form @var{b}, and so on. This is what happens when you
20write several forms in succession in the body of a function, or at top
21level in a file of Lisp code---the forms are executed in the order
22written. We call this @dfn{textual order}. For example, if a function
23body consists of two forms @var{a} and @var{b}, evaluation of the
24function evaluates first @var{a} and then @var{b}. The result of
25evaluating @var{b} becomes the value of the function.
26
27 Explicit control structures make possible an order of execution other
28than sequential.
29
30 Emacs Lisp provides several kinds of control structure, including
31other varieties of sequencing, conditionals, iteration, and (controlled)
32jumps---all discussed below. The built-in control structures are
33special forms since their subforms are not necessarily evaluated or not
34evaluated sequentially. You can use macros to define your own control
35structure constructs (@pxref{Macros}).
36
37@menu
38* Sequencing:: Evaluation in textual order.
39* Conditionals:: @code{if}, @code{cond}, @code{when}, @code{unless}.
40* Combining Conditions:: @code{and}, @code{or}, @code{not}.
41* Iteration:: @code{while} loops.
42* Nonlocal Exits:: Jumping out of a sequence.
43@end menu
44
45@node Sequencing
46@section Sequencing
47
48 Evaluating forms in the order they appear is the most common way
49control passes from one form to another. In some contexts, such as in a
50function body, this happens automatically. Elsewhere you must use a
51control structure construct to do this: @code{progn}, the simplest
52control construct of Lisp.
53
54 A @code{progn} special form looks like this:
55
56@example
57@group
58(progn @var{a} @var{b} @var{c} @dots{})
59@end group
60@end example
61
62@noindent
63and it says to execute the forms @var{a}, @var{b}, @var{c}, and so on, in
64that order. These forms are called the @dfn{body} of the @code{progn} form.
65The value of the last form in the body becomes the value of the entire
66@code{progn}. @code{(progn)} returns @code{nil}.
67
68@cindex implicit @code{progn}
69 In the early days of Lisp, @code{progn} was the only way to execute
70two or more forms in succession and use the value of the last of them.
71But programmers found they often needed to use a @code{progn} in the
72body of a function, where (at that time) only one form was allowed. So
73the body of a function was made into an ``implicit @code{progn}'':
74several forms are allowed just as in the body of an actual @code{progn}.
75Many other control structures likewise contain an implicit @code{progn}.
76As a result, @code{progn} is not used as much as it was many years ago.
77It is needed now most often inside an @code{unwind-protect}, @code{and},
78@code{or}, or in the @var{then}-part of an @code{if}.
79
80@defspec progn forms@dots{}
81This special form evaluates all of the @var{forms}, in textual
82order, returning the result of the final form.
83
84@example
85@group
86(progn (print "The first form")
87 (print "The second form")
88 (print "The third form"))
89 @print{} "The first form"
90 @print{} "The second form"
91 @print{} "The third form"
92@result{} "The third form"
93@end group
94@end example
95@end defspec
96
ddff3351
GM
97 Two other constructs likewise evaluate a series of forms but return
98different values:
b8d4c8d0
GM
99
100@defspec prog1 form1 forms@dots{}
101This special form evaluates @var{form1} and all of the @var{forms}, in
102textual order, returning the result of @var{form1}.
103
104@example
105@group
106(prog1 (print "The first form")
107 (print "The second form")
108 (print "The third form"))
109 @print{} "The first form"
110 @print{} "The second form"
111 @print{} "The third form"
112@result{} "The first form"
113@end group
114@end example
115
116Here is a way to remove the first element from a list in the variable
117@code{x}, then return the value of that former element:
118
119@example
120(prog1 (car x) (setq x (cdr x)))
121@end example
122@end defspec
123
124@defspec prog2 form1 form2 forms@dots{}
125This special form evaluates @var{form1}, @var{form2}, and all of the
126following @var{forms}, in textual order, returning the result of
127@var{form2}.
128
129@example
130@group
131(prog2 (print "The first form")
132 (print "The second form")
133 (print "The third form"))
134 @print{} "The first form"
135 @print{} "The second form"
136 @print{} "The third form"
137@result{} "The second form"
138@end group
139@end example
140@end defspec
141
142@node Conditionals
143@section Conditionals
144@cindex conditional evaluation
145
146 Conditional control structures choose among alternatives. Emacs Lisp
147has four conditional forms: @code{if}, which is much the same as in
148other languages; @code{when} and @code{unless}, which are variants of
149@code{if}; and @code{cond}, which is a generalized case statement.
150
151@defspec if condition then-form else-forms@dots{}
152@code{if} chooses between the @var{then-form} and the @var{else-forms}
153based on the value of @var{condition}. If the evaluated @var{condition} is
154non-@code{nil}, @var{then-form} is evaluated and the result returned.
155Otherwise, the @var{else-forms} are evaluated in textual order, and the
156value of the last one is returned. (The @var{else} part of @code{if} is
157an example of an implicit @code{progn}. @xref{Sequencing}.)
158
159If @var{condition} has the value @code{nil}, and no @var{else-forms} are
160given, @code{if} returns @code{nil}.
161
162@code{if} is a special form because the branch that is not selected is
ddff3351
GM
163never evaluated---it is ignored. Thus, in this example,
164@code{true} is not printed because @code{print} is never called:
b8d4c8d0
GM
165
166@example
167@group
168(if nil
169 (print 'true)
170 'very-false)
171@result{} very-false
172@end group
173@end example
174@end defspec
175
176@defmac when condition then-forms@dots{}
177This is a variant of @code{if} where there are no @var{else-forms},
178and possibly several @var{then-forms}. In particular,
179
180@example
181(when @var{condition} @var{a} @var{b} @var{c})
182@end example
183
184@noindent
185is entirely equivalent to
186
187@example
188(if @var{condition} (progn @var{a} @var{b} @var{c}) nil)
189@end example
190@end defmac
191
192@defmac unless condition forms@dots{}
193This is a variant of @code{if} where there is no @var{then-form}:
194
195@example
196(unless @var{condition} @var{a} @var{b} @var{c})
197@end example
198
199@noindent
200is entirely equivalent to
201
202@example
203(if @var{condition} nil
204 @var{a} @var{b} @var{c})
205@end example
206@end defmac
207
208@defspec cond clause@dots{}
209@code{cond} chooses among an arbitrary number of alternatives. Each
210@var{clause} in the @code{cond} must be a list. The @sc{car} of this
211list is the @var{condition}; the remaining elements, if any, the
212@var{body-forms}. Thus, a clause looks like this:
213
214@example
215(@var{condition} @var{body-forms}@dots{})
216@end example
217
218@code{cond} tries the clauses in textual order, by evaluating the
219@var{condition} of each clause. If the value of @var{condition} is
220non-@code{nil}, the clause ``succeeds''; then @code{cond} evaluates its
fa022909
GM
221@var{body-forms}, and returns the value of the last of @var{body-forms}.
222Any remaining clauses are ignored.
b8d4c8d0 223
16152b76 224If the value of @var{condition} is @code{nil}, the clause ``fails'', so
fa022909 225the @code{cond} moves on to the following clause, trying its @var{condition}.
b8d4c8d0
GM
226
227A clause may also look like this:
228
229@example
230(@var{condition})
231@end example
232
233@noindent
fa022909
GM
234Then, if @var{condition} is non-@code{nil} when tested, the @code{cond}
235form returns the value of @var{condition}.
236
237If every @var{condition} evaluates to @code{nil}, so that every clause
238fails, @code{cond} returns @code{nil}.
b8d4c8d0
GM
239
240The following example has four clauses, which test for the cases where
241the value of @code{x} is a number, string, buffer and symbol,
242respectively:
243
244@example
245@group
246(cond ((numberp x) x)
247 ((stringp x) x)
248 ((bufferp x)
249 (setq temporary-hack x) ; @r{multiple body-forms}
250 (buffer-name x)) ; @r{in one clause}
251 ((symbolp x) (symbol-value x)))
252@end group
253@end example
254
255Often we want to execute the last clause whenever none of the previous
256clauses was successful. To do this, we use @code{t} as the
257@var{condition} of the last clause, like this: @code{(t
258@var{body-forms})}. The form @code{t} evaluates to @code{t}, which is
259never @code{nil}, so this clause never fails, provided the @code{cond}
ddff3351 260gets to it at all. For example:
b8d4c8d0
GM
261
262@example
263@group
264(setq a 5)
265(cond ((eq a 'hack) 'foo)
266 (t "default"))
267@result{} "default"
268@end group
269@end example
270
271@noindent
272This @code{cond} expression returns @code{foo} if the value of @code{a}
273is @code{hack}, and returns the string @code{"default"} otherwise.
274@end defspec
275
276Any conditional construct can be expressed with @code{cond} or with
277@code{if}. Therefore, the choice between them is a matter of style.
278For example:
279
280@example
281@group
282(if @var{a} @var{b} @var{c})
283@equiv{}
284(cond (@var{a} @var{b}) (t @var{c}))
285@end group
286@end example
287
f433306a 288@menu
da187191 289* Pattern matching case statement::
f433306a
SM
290@end menu
291
da187191
GM
292@node Pattern matching case statement
293@subsection Pattern matching case statement
f433306a
SM
294@cindex pcase
295@cindex pattern matching
296
297To compare a particular value against various possible cases, the macro
298@code{pcase} can come handy. It takes the following form:
299
300@example
301(pcase @var{exp} @var{branch}1 @var{branch}2 @var{branch}3 @dots{})
302@end example
303
304where each @var{branch} takes the form @code{(@var{upattern}
305@var{body-forms}@dots{})}.
306
307It will first evaluate @var{exp} and then compare the value against each
308@var{upattern} to see which @var{branch} to use, after which it will run the
309corresponding @var{body-forms}. A common use case is to distinguish
310between a few different constant values:
311
312@example
313(pcase (get-return-code x)
314 (`success (message "Done!"))
315 (`would-block (message "Sorry, can't do it now"))
316 (`read-only (message "The shmliblick is read-only"))
317 (`access-denied (message "You do not have the needed rights"))
318 (code (message "Unknown return code %S" code)))
319@end example
320
321In the last clause, @code{code} is a variable that gets bound to the value that
322was returned by @code{(get-return-code x)}.
323
324To give a more complex example, a simple interpreter for a little
c04d52fb 325expression language could look like (note that this example requires
25454130 326lexical binding):
f433306a
SM
327
328@example
329(defun evaluate (exp env)
330 (pcase exp
331 (`(add ,x ,y) (+ (evaluate x env) (evaluate y env)))
a9560047 332 (`(call ,fun ,arg) (funcall (evaluate fun env) (evaluate arg env)))
f433306a
SM
333 (`(fn ,arg ,body) (lambda (val)
334 (evaluate body (cons (cons arg val) env))))
335 ((pred numberp) exp)
336 ((pred symbolp) (cdr (assq exp env)))
337 (_ (error "Unknown expression %S" exp))))
338@end example
339
340Where @code{`(add ,x ,y)} is a pattern that checks that @code{exp} is a three
341element list starting with the symbol @code{add}, then extracts the second and
342third elements and binds them to the variables @code{x} and @code{y}.
343@code{(pred numberp)} is a pattern that simply checks that @code{exp}
344is a number, and @code{_} is the catch-all pattern that matches anything.
345
a9560047
TH
346Here are some sample programs including their evaluation results:
347
348@example
349(evaluate '(add 1 2) nil) ;=> 3
350(evaluate '(add x y) '((x . 1) (y . 2))) ;=> 3
351(evaluate '(call (fn x (add 1 x)) 2) nil) ;=> 3
ff1c842a 352(evaluate '(sub 1 2) nil) ;=> error
a9560047
TH
353@end example
354
f433306a
SM
355There are two kinds of patterns involved in @code{pcase}, called
356@emph{U-patterns} and @emph{Q-patterns}. The @var{upattern} mentioned above
357are U-patterns and can take the following forms:
358
359@table @code
360@item `@var{qpattern}
361This is one of the most common form of patterns. The intention is to mimic the
362backquote macro: this pattern matches those values that could have been built
363by such a backquote expression. Since we're pattern matching rather than
364building a value, the unquote does not indicate where to plug an expression,
365but instead it lets one specify a U-pattern that should match the value at
366that location.
367
368More specifically, a Q-pattern can take the following forms:
369@table @code
370@item (@var{qpattern1} . @var{qpattern2})
371This pattern matches any cons cell whose @code{car} matches @var{QPATTERN1} and
372whose @code{cdr} matches @var{PATTERN2}.
373@item @var{atom}
374This pattern matches any atom @code{equal} to @var{atom}.
375@item ,@var{upattern}
376This pattern matches any object that matches the @var{upattern}.
377@end table
378
379@item @var{symbol}
380A mere symbol in a U-pattern matches anything, and additionally let-binds this
381symbol to the value that it matched, so that you can later refer to it, either
382in the @var{body-forms} or also later in the pattern.
383@item _
384This so-called @emph{don't care} pattern matches anything, like the previous
b388e7ad 385one, but unlike symbol patterns it does not bind any variable.
f433306a
SM
386@item (pred @var{pred})
387This pattern matches if the function @var{pred} returns non-@code{nil} when
388called with the object being matched.
389@item (or @var{upattern1} @var{upattern2}@dots{})
390This pattern matches as soon as one of the argument patterns succeeds.
391All argument patterns should let-bind the same variables.
392@item (and @var{upattern1} @var{upattern2}@dots{})
393This pattern matches only if all the argument patterns succeed.
394@item (guard @var{exp})
395This pattern ignores the object being examined and simply succeeds if @var{exp}
396evaluates to non-@code{nil} and fails otherwise. It is typically used inside
397an @code{and} pattern. For example, @code{(and x (guard (< x 10)))}
398is a pattern which matches any number smaller than 10 and let-binds it to
399the variable @code{x}.
400@end table
401
b8d4c8d0
GM
402@node Combining Conditions
403@section Constructs for Combining Conditions
404
405 This section describes three constructs that are often used together
406with @code{if} and @code{cond} to express complicated conditions. The
407constructs @code{and} and @code{or} can also be used individually as
408kinds of multiple conditional constructs.
409
410@defun not condition
411This function tests for the falsehood of @var{condition}. It returns
412@code{t} if @var{condition} is @code{nil}, and @code{nil} otherwise.
413The function @code{not} is identical to @code{null}, and we recommend
414using the name @code{null} if you are testing for an empty list.
415@end defun
416
417@defspec and conditions@dots{}
418The @code{and} special form tests whether all the @var{conditions} are
419true. It works by evaluating the @var{conditions} one by one in the
420order written.
421
422If any of the @var{conditions} evaluates to @code{nil}, then the result
423of the @code{and} must be @code{nil} regardless of the remaining
424@var{conditions}; so @code{and} returns @code{nil} right away, ignoring
425the remaining @var{conditions}.
426
427If all the @var{conditions} turn out non-@code{nil}, then the value of
428the last of them becomes the value of the @code{and} form. Just
429@code{(and)}, with no @var{conditions}, returns @code{t}, appropriate
430because all the @var{conditions} turned out non-@code{nil}. (Think
431about it; which one did not?)
432
433Here is an example. The first condition returns the integer 1, which is
434not @code{nil}. Similarly, the second condition returns the integer 2,
435which is not @code{nil}. The third condition is @code{nil}, so the
436remaining condition is never evaluated.
437
438@example
439@group
440(and (print 1) (print 2) nil (print 3))
441 @print{} 1
442 @print{} 2
443@result{} nil
444@end group
445@end example
446
447Here is a more realistic example of using @code{and}:
448
449@example
450@group
451(if (and (consp foo) (eq (car foo) 'x))
452 (message "foo is a list starting with x"))
453@end group
454@end example
455
456@noindent
457Note that @code{(car foo)} is not executed if @code{(consp foo)} returns
458@code{nil}, thus avoiding an error.
459
460@code{and} expressions can also be written using either @code{if} or
461@code{cond}. Here's how:
462
463@example
464@group
465(and @var{arg1} @var{arg2} @var{arg3})
466@equiv{}
467(if @var{arg1} (if @var{arg2} @var{arg3}))
468@equiv{}
469(cond (@var{arg1} (cond (@var{arg2} @var{arg3}))))
470@end group
471@end example
472@end defspec
473
474@defspec or conditions@dots{}
475The @code{or} special form tests whether at least one of the
476@var{conditions} is true. It works by evaluating all the
477@var{conditions} one by one in the order written.
478
479If any of the @var{conditions} evaluates to a non-@code{nil} value, then
480the result of the @code{or} must be non-@code{nil}; so @code{or} returns
481right away, ignoring the remaining @var{conditions}. The value it
482returns is the non-@code{nil} value of the condition just evaluated.
483
484If all the @var{conditions} turn out @code{nil}, then the @code{or}
485expression returns @code{nil}. Just @code{(or)}, with no
486@var{conditions}, returns @code{nil}, appropriate because all the
487@var{conditions} turned out @code{nil}. (Think about it; which one
488did not?)
489
490For example, this expression tests whether @code{x} is either
491@code{nil} or the integer zero:
492
493@example
494(or (eq x nil) (eq x 0))
495@end example
496
497Like the @code{and} construct, @code{or} can be written in terms of
498@code{cond}. For example:
499
500@example
501@group
502(or @var{arg1} @var{arg2} @var{arg3})
503@equiv{}
504(cond (@var{arg1})
505 (@var{arg2})
506 (@var{arg3}))
507@end group
508@end example
509
510You could almost write @code{or} in terms of @code{if}, but not quite:
511
512@example
513@group
514(if @var{arg1} @var{arg1}
515 (if @var{arg2} @var{arg2}
516 @var{arg3}))
517@end group
518@end example
519
520@noindent
521This is not completely equivalent because it can evaluate @var{arg1} or
522@var{arg2} twice. By contrast, @code{(or @var{arg1} @var{arg2}
523@var{arg3})} never evaluates any argument more than once.
524@end defspec
525
526@node Iteration
527@section Iteration
528@cindex iteration
529@cindex recursion
530
531 Iteration means executing part of a program repetitively. For
532example, you might want to repeat some computation once for each element
533of a list, or once for each integer from 0 to @var{n}. You can do this
534in Emacs Lisp with the special form @code{while}:
535
536@defspec while condition forms@dots{}
537@code{while} first evaluates @var{condition}. If the result is
538non-@code{nil}, it evaluates @var{forms} in textual order. Then it
539reevaluates @var{condition}, and if the result is non-@code{nil}, it
540evaluates @var{forms} again. This process repeats until @var{condition}
541evaluates to @code{nil}.
542
543There is no limit on the number of iterations that may occur. The loop
544will continue until either @var{condition} evaluates to @code{nil} or
545until an error or @code{throw} jumps out of it (@pxref{Nonlocal Exits}).
546
547The value of a @code{while} form is always @code{nil}.
548
549@example
550@group
551(setq num 0)
552 @result{} 0
553@end group
554@group
555(while (< num 4)
556 (princ (format "Iteration %d." num))
557 (setq num (1+ num)))
558 @print{} Iteration 0.
559 @print{} Iteration 1.
560 @print{} Iteration 2.
561 @print{} Iteration 3.
562 @result{} nil
563@end group
564@end example
565
566To write a ``repeat...until'' loop, which will execute something on each
567iteration and then do the end-test, put the body followed by the
568end-test in a @code{progn} as the first argument of @code{while}, as
569shown here:
570
571@example
572@group
573(while (progn
574 (forward-line 1)
575 (not (looking-at "^$"))))
576@end group
577@end example
578
579@noindent
580This moves forward one line and continues moving by lines until it
581reaches an empty line. It is peculiar in that the @code{while} has no
582body, just the end test (which also does the real work of moving point).
583@end defspec
584
585 The @code{dolist} and @code{dotimes} macros provide convenient ways to
586write two common kinds of loops.
587
588@defmac dolist (var list [result]) body@dots{}
589This construct executes @var{body} once for each element of
590@var{list}, binding the variable @var{var} locally to hold the current
591element. Then it returns the value of evaluating @var{result}, or
592@code{nil} if @var{result} is omitted. For example, here is how you
593could use @code{dolist} to define the @code{reverse} function:
594
595@example
596(defun reverse (list)
597 (let (value)
598 (dolist (elt list value)
599 (setq value (cons elt value)))))
600@end example
601@end defmac
602
603@defmac dotimes (var count [result]) body@dots{}
604This construct executes @var{body} once for each integer from 0
605(inclusive) to @var{count} (exclusive), binding the variable @var{var}
606to the integer for the current iteration. Then it returns the value
607of evaluating @var{result}, or @code{nil} if @var{result} is omitted.
608Here is an example of using @code{dotimes} to do something 100 times:
609
610@example
611(dotimes (i 100)
612 (insert "I will not obey absurd orders\n"))
613@end example
614@end defmac
615
616@node Nonlocal Exits
617@section Nonlocal Exits
618@cindex nonlocal exits
619
620 A @dfn{nonlocal exit} is a transfer of control from one point in a
621program to another remote point. Nonlocal exits can occur in Emacs Lisp
622as a result of errors; you can also use them under explicit control.
623Nonlocal exits unbind all variable bindings made by the constructs being
624exited.
625
626@menu
627* Catch and Throw:: Nonlocal exits for the program's own purposes.
628* Examples of Catch:: Showing how such nonlocal exits can be written.
629* Errors:: How errors are signaled and handled.
630* Cleanups:: Arranging to run a cleanup form if an error happens.
631@end menu
632
633@node Catch and Throw
634@subsection Explicit Nonlocal Exits: @code{catch} and @code{throw}
635
636 Most control constructs affect only the flow of control within the
637construct itself. The function @code{throw} is the exception to this
638rule of normal program execution: it performs a nonlocal exit on
639request. (There are other exceptions, but they are for error handling
640only.) @code{throw} is used inside a @code{catch}, and jumps back to
641that @code{catch}. For example:
642
643@example
644@group
645(defun foo-outer ()
646 (catch 'foo
647 (foo-inner)))
648
649(defun foo-inner ()
650 @dots{}
651 (if x
652 (throw 'foo t))
653 @dots{})
654@end group
655@end example
656
657@noindent
658The @code{throw} form, if executed, transfers control straight back to
659the corresponding @code{catch}, which returns immediately. The code
660following the @code{throw} is not executed. The second argument of
661@code{throw} is used as the return value of the @code{catch}.
662
663 The function @code{throw} finds the matching @code{catch} based on the
664first argument: it searches for a @code{catch} whose first argument is
665@code{eq} to the one specified in the @code{throw}. If there is more
666than one applicable @code{catch}, the innermost one takes precedence.
667Thus, in the above example, the @code{throw} specifies @code{foo}, and
668the @code{catch} in @code{foo-outer} specifies the same symbol, so that
669@code{catch} is the applicable one (assuming there is no other matching
670@code{catch} in between).
671
672 Executing @code{throw} exits all Lisp constructs up to the matching
6a787d9a
CY
673@code{catch}, including function calls. When binding constructs such
674as @code{let} or function calls are exited in this way, the bindings
675are unbound, just as they are when these constructs exit normally
b8d4c8d0
GM
676(@pxref{Local Variables}). Likewise, @code{throw} restores the buffer
677and position saved by @code{save-excursion} (@pxref{Excursions}), and
6a787d9a
CY
678the narrowing status saved by @code{save-restriction}. It also runs
679any cleanups established with the @code{unwind-protect} special form
680when it exits that form (@pxref{Cleanups}).
b8d4c8d0
GM
681
682 The @code{throw} need not appear lexically within the @code{catch}
683that it jumps to. It can equally well be called from another function
684called within the @code{catch}. As long as the @code{throw} takes place
685chronologically after entry to the @code{catch}, and chronologically
686before exit from it, it has access to that @code{catch}. This is why
687@code{throw} can be used in commands such as @code{exit-recursive-edit}
688that throw back to the editor command loop (@pxref{Recursive Editing}).
689
690@cindex CL note---only @code{throw} in Emacs
691@quotation
692@b{Common Lisp note:} Most other versions of Lisp, including Common Lisp,
693have several ways of transferring control nonsequentially: @code{return},
694@code{return-from}, and @code{go}, for example. Emacs Lisp has only
88390adf
GM
695@code{throw}. The @file{cl-lib} library provides versions of some of
696these. @xref{Blocks and Exits,,,cl,Common Lisp Extensions}.
b8d4c8d0
GM
697@end quotation
698
699@defspec catch tag body@dots{}
700@cindex tag on run time stack
701@code{catch} establishes a return point for the @code{throw} function.
702The return point is distinguished from other such return points by
703@var{tag}, which may be any Lisp object except @code{nil}. The argument
704@var{tag} is evaluated normally before the return point is established.
705
706With the return point in effect, @code{catch} evaluates the forms of the
707@var{body} in textual order. If the forms execute normally (without
708error or nonlocal exit) the value of the last body form is returned from
709the @code{catch}.
710
711If a @code{throw} is executed during the execution of @var{body},
712specifying the same value @var{tag}, the @code{catch} form exits
713immediately; the value it returns is whatever was specified as the
714second argument of @code{throw}.
715@end defspec
716
717@defun throw tag value
718The purpose of @code{throw} is to return from a return point previously
719established with @code{catch}. The argument @var{tag} is used to choose
720among the various existing return points; it must be @code{eq} to the value
721specified in the @code{catch}. If multiple return points match @var{tag},
722the innermost one is used.
723
724The argument @var{value} is used as the value to return from that
725@code{catch}.
726
727@kindex no-catch
728If no return point is in effect with tag @var{tag}, then a @code{no-catch}
729error is signaled with data @code{(@var{tag} @var{value})}.
730@end defun
731
732@node Examples of Catch
733@subsection Examples of @code{catch} and @code{throw}
734
735 One way to use @code{catch} and @code{throw} is to exit from a doubly
16152b76 736nested loop. (In most languages, this would be done with a ``goto''.)
b8d4c8d0
GM
737Here we compute @code{(foo @var{i} @var{j})} for @var{i} and @var{j}
738varying from 0 to 9:
739
740@example
741@group
742(defun search-foo ()
743 (catch 'loop
744 (let ((i 0))
745 (while (< i 10)
746 (let ((j 0))
747 (while (< j 10)
748 (if (foo i j)
749 (throw 'loop (list i j)))
750 (setq j (1+ j))))
751 (setq i (1+ i))))))
752@end group
753@end example
754
755@noindent
756If @code{foo} ever returns non-@code{nil}, we stop immediately and return a
757list of @var{i} and @var{j}. If @code{foo} always returns @code{nil}, the
758@code{catch} returns normally, and the value is @code{nil}, since that
759is the result of the @code{while}.
760
761 Here are two tricky examples, slightly different, showing two
762return points at once. First, two return points with the same tag,
763@code{hack}:
764
765@example
766@group
767(defun catch2 (tag)
768 (catch tag
769 (throw 'hack 'yes)))
770@result{} catch2
771@end group
772
773@group
774(catch 'hack
775 (print (catch2 'hack))
776 'no)
777@print{} yes
778@result{} no
779@end group
780@end example
781
782@noindent
783Since both return points have tags that match the @code{throw}, it goes to
784the inner one, the one established in @code{catch2}. Therefore,
785@code{catch2} returns normally with value @code{yes}, and this value is
786printed. Finally the second body form in the outer @code{catch}, which is
787@code{'no}, is evaluated and returned from the outer @code{catch}.
788
789 Now let's change the argument given to @code{catch2}:
790
791@example
792@group
793(catch 'hack
794 (print (catch2 'quux))
795 'no)
796@result{} yes
797@end group
798@end example
799
800@noindent
801We still have two return points, but this time only the outer one has
802the tag @code{hack}; the inner one has the tag @code{quux} instead.
803Therefore, @code{throw} makes the outer @code{catch} return the value
804@code{yes}. The function @code{print} is never called, and the
805body-form @code{'no} is never evaluated.
806
807@node Errors
808@subsection Errors
809@cindex errors
810
811 When Emacs Lisp attempts to evaluate a form that, for some reason,
812cannot be evaluated, it @dfn{signals} an @dfn{error}.
813
814 When an error is signaled, Emacs's default reaction is to print an
815error message and terminate execution of the current command. This is
816the right thing to do in most cases, such as if you type @kbd{C-f} at
817the end of the buffer.
818
819 In complicated programs, simple termination may not be what you want.
820For example, the program may have made temporary changes in data
821structures, or created temporary buffers that should be deleted before
822the program is finished. In such cases, you would use
823@code{unwind-protect} to establish @dfn{cleanup expressions} to be
824evaluated in case of error. (@xref{Cleanups}.) Occasionally, you may
825wish the program to continue execution despite an error in a subroutine.
826In these cases, you would use @code{condition-case} to establish
827@dfn{error handlers} to recover control in case of error.
828
829 Resist the temptation to use error handling to transfer control from
830one part of the program to another; use @code{catch} and @code{throw}
831instead. @xref{Catch and Throw}.
832
833@menu
834* Signaling Errors:: How to report an error.
835* Processing of Errors:: What Emacs does when you report an error.
836* Handling Errors:: How you can trap errors and continue execution.
837* Error Symbols:: How errors are classified for trapping them.
838@end menu
839
840@node Signaling Errors
841@subsubsection How to Signal an Error
842@cindex signaling errors
843
844 @dfn{Signaling} an error means beginning error processing. Error
845processing normally aborts all or part of the running program and
846returns to a point that is set up to handle the error
847(@pxref{Processing of Errors}). Here we describe how to signal an
848error.
849
850 Most errors are signaled ``automatically'' within Lisp primitives
851which you call for other purposes, such as if you try to take the
852@sc{car} of an integer or move forward a character at the end of the
853buffer. You can also signal errors explicitly with the functions
854@code{error} and @code{signal}.
855
856 Quitting, which happens when the user types @kbd{C-g}, is not
857considered an error, but it is handled almost like an error.
858@xref{Quitting}.
859
860 Every error specifies an error message, one way or another. The
861message should state what is wrong (``File does not exist''), not how
862things ought to be (``File must exist''). The convention in Emacs
863Lisp is that error messages should start with a capital letter, but
864should not end with any sort of punctuation.
865
866@defun error format-string &rest args
867This function signals an error with an error message constructed by
868applying @code{format} (@pxref{Formatting Strings}) to
869@var{format-string} and @var{args}.
870
871These examples show typical uses of @code{error}:
872
873@example
874@group
875(error "That is an error -- try something else")
876 @error{} That is an error -- try something else
877@end group
878
879@group
880(error "You have committed %d errors" 10)
881 @error{} You have committed 10 errors
882@end group
883@end example
884
885@code{error} works by calling @code{signal} with two arguments: the
886error symbol @code{error}, and a list containing the string returned by
887@code{format}.
888
889@strong{Warning:} If you want to use your own string as an error message
890verbatim, don't just write @code{(error @var{string})}. If @var{string}
891contains @samp{%}, it will be interpreted as a format specifier, with
892undesirable results. Instead, use @code{(error "%s" @var{string})}.
893@end defun
894
895@defun signal error-symbol data
896@anchor{Definition of signal}
897This function signals an error named by @var{error-symbol}. The
898argument @var{data} is a list of additional Lisp objects relevant to
899the circumstances of the error.
900
901The argument @var{error-symbol} must be an @dfn{error symbol}---a symbol
54bd972f
SM
902defined with @code{define-error}. This is how Emacs Lisp classifies different
903sorts of errors. @xref{Error Symbols}, for a description of error symbols,
b8d4c8d0
GM
904error conditions and condition names.
905
906If the error is not handled, the two arguments are used in printing
907the error message. Normally, this error message is provided by the
908@code{error-message} property of @var{error-symbol}. If @var{data} is
909non-@code{nil}, this is followed by a colon and a comma separated list
910of the unevaluated elements of @var{data}. For @code{error}, the
911error message is the @sc{car} of @var{data} (that must be a string).
912Subcategories of @code{file-error} are handled specially.
913
914The number and significance of the objects in @var{data} depends on
59f80054 915@var{error-symbol}. For example, with a @code{wrong-type-argument} error,
b8d4c8d0
GM
916there should be two objects in the list: a predicate that describes the type
917that was expected, and the object that failed to fit that type.
918
919Both @var{error-symbol} and @var{data} are available to any error
920handlers that handle the error: @code{condition-case} binds a local
921variable to a list of the form @code{(@var{error-symbol} .@:
922@var{data})} (@pxref{Handling Errors}).
923
ddff3351
GM
924The function @code{signal} never returns.
925@c (though in older Emacs versions it sometimes could).
b8d4c8d0 926
ddff3351 927@example
b8d4c8d0
GM
928@group
929(signal 'wrong-number-of-arguments '(x y))
930 @error{} Wrong number of arguments: x, y
931@end group
932
933@group
934(signal 'no-such-error '("My unknown error condition"))
935 @error{} peculiar error: "My unknown error condition"
936@end group
ddff3351 937@end example
b8d4c8d0
GM
938@end defun
939
38868ad7
GM
940@cindex user errors, signaling
941@defun user-error format-string &rest args
942This function behaves exactly like @code{error}, except that it uses
943the error symbol @code{user-error} rather than @code{error}. As the
944name suggests, this is intended to report errors on the part of the
945user, rather than errors in the code itself. For example,
946if you try to use the command @code{Info-history-back} (@kbd{l}) to
947move back beyond the start of your Info browsing history, Emacs
948signals a @code{user-error}. Such errors do not cause entry to the
949debugger, even when @code{debug-on-error} is non-@code{nil}.
950@xref{Error Debugging}.
951@end defun
952
b8d4c8d0
GM
953@cindex CL note---no continuable errors
954@quotation
955@b{Common Lisp note:} Emacs Lisp has nothing like the Common Lisp
956concept of continuable errors.
957@end quotation
958
959@node Processing of Errors
960@subsubsection How Emacs Processes Errors
961
962When an error is signaled, @code{signal} searches for an active
963@dfn{handler} for the error. A handler is a sequence of Lisp
964expressions designated to be executed if an error happens in part of the
965Lisp program. If the error has an applicable handler, the handler is
966executed, and control resumes following the handler. The handler
967executes in the environment of the @code{condition-case} that
968established it; all functions called within that @code{condition-case}
969have already been exited, and the handler cannot return to them.
970
971If there is no applicable handler for the error, it terminates the
972current command and returns control to the editor command loop. (The
973command loop has an implicit handler for all kinds of errors.) The
974command loop's handler uses the error symbol and associated data to
975print an error message. You can use the variable
976@code{command-error-function} to control how this is done:
977
978@defvar command-error-function
979This variable, if non-@code{nil}, specifies a function to use to
980handle errors that return control to the Emacs command loop. The
981function should take three arguments: @var{data}, a list of the same
982form that @code{condition-case} would bind to its variable;
983@var{context}, a string describing the situation in which the error
984occurred, or (more often) @code{nil}; and @var{caller}, the Lisp
985function which called the primitive that signaled the error.
986@end defvar
987
988@cindex @code{debug-on-error} use
989An error that has no explicit handler may call the Lisp debugger. The
990debugger is enabled if the variable @code{debug-on-error} (@pxref{Error
991Debugging}) is non-@code{nil}. Unlike error handlers, the debugger runs
992in the environment of the error, so that you can examine values of
993variables precisely as they were at the time of the error.
994
995@node Handling Errors
996@subsubsection Writing Code to Handle Errors
997@cindex error handler
998@cindex handling errors
999
1000 The usual effect of signaling an error is to terminate the command
1001that is running and return immediately to the Emacs editor command loop.
1002You can arrange to trap errors occurring in a part of your program by
1003establishing an error handler, with the special form
1004@code{condition-case}. A simple example looks like this:
1005
1006@example
1007@group
1008(condition-case nil
1009 (delete-file filename)
1010 (error nil))
1011@end group
1012@end example
1013
1014@noindent
1015This deletes the file named @var{filename}, catching any error and
866c1d22
GM
1016returning @code{nil} if an error occurs. (You can use the macro
1017@code{ignore-errors} for a simple case like this; see below.)
b8d4c8d0
GM
1018
1019 The @code{condition-case} construct is often used to trap errors that
1020are predictable, such as failure to open a file in a call to
1021@code{insert-file-contents}. It is also used to trap errors that are
1022totally unpredictable, such as when the program evaluates an expression
1023read from the user.
1024
1025 The second argument of @code{condition-case} is called the
1026@dfn{protected form}. (In the example above, the protected form is a
1027call to @code{delete-file}.) The error handlers go into effect when
1028this form begins execution and are deactivated when this form returns.
1029They remain in effect for all the intervening time. In particular, they
1030are in effect during the execution of functions called by this form, in
1031their subroutines, and so on. This is a good thing, since, strictly
1032speaking, errors can be signaled only by Lisp primitives (including
1033@code{signal} and @code{error}) called by the protected form, not by the
1034protected form itself.
1035
1036 The arguments after the protected form are handlers. Each handler
1037lists one or more @dfn{condition names} (which are symbols) to specify
1038which errors it will handle. The error symbol specified when an error
1039is signaled also defines a list of condition names. A handler applies
1040to an error if they have any condition names in common. In the example
1041above, there is one handler, and it specifies one condition name,
1042@code{error}, which covers all errors.
1043
1044 The search for an applicable handler checks all the established handlers
1045starting with the most recently established one. Thus, if two nested
1046@code{condition-case} forms offer to handle the same error, the inner of
1047the two gets to handle it.
1048
1049 If an error is handled by some @code{condition-case} form, this
1050ordinarily prevents the debugger from being run, even if
1051@code{debug-on-error} says this error should invoke the debugger.
1052
1053 If you want to be able to debug errors that are caught by a
1054@code{condition-case}, set the variable @code{debug-on-signal} to a
1055non-@code{nil} value. You can also specify that a particular handler
1056should let the debugger run first, by writing @code{debug} among the
1057conditions, like this:
1058
1059@example
1060@group
1061(condition-case nil
1062 (delete-file filename)
1063 ((debug error) nil))
1064@end group
1065@end example
1066
1067@noindent
1068The effect of @code{debug} here is only to prevent
1069@code{condition-case} from suppressing the call to the debugger. Any
1070given error will invoke the debugger only if @code{debug-on-error} and
1071the other usual filtering mechanisms say it should. @xref{Error Debugging}.
1072
1be3ca5a
LL
1073@defmac condition-case-unless-debug var protected-form handlers@dots{}
1074The macro @code{condition-case-unless-debug} provides another way to
866c1d22
GM
1075handle debugging of such forms. It behaves exactly like
1076@code{condition-case}, unless the variable @code{debug-on-error} is
1077non-@code{nil}, in which case it does not handle any errors at all.
1078@end defmac
1079
b8d4c8d0
GM
1080 Once Emacs decides that a certain handler handles the error, it
1081returns control to that handler. To do so, Emacs unbinds all variable
1082bindings made by binding constructs that are being exited, and
1083executes the cleanups of all @code{unwind-protect} forms that are
1084being exited. Once control arrives at the handler, the body of the
1085handler executes normally.
1086
1087 After execution of the handler body, execution returns from the
1088@code{condition-case} form. Because the protected form is exited
1089completely before execution of the handler, the handler cannot resume
1090execution at the point of the error, nor can it examine variable
1091bindings that were made within the protected form. All it can do is
1092clean up and proceed.
1093
1094 Error signaling and handling have some resemblance to @code{throw} and
1095@code{catch} (@pxref{Catch and Throw}), but they are entirely separate
1096facilities. An error cannot be caught by a @code{catch}, and a
1097@code{throw} cannot be handled by an error handler (though using
1098@code{throw} when there is no suitable @code{catch} signals an error
1099that can be handled).
1100
1101@defspec condition-case var protected-form handlers@dots{}
1102This special form establishes the error handlers @var{handlers} around
1103the execution of @var{protected-form}. If @var{protected-form} executes
1104without error, the value it returns becomes the value of the
1105@code{condition-case} form; in this case, the @code{condition-case} has
1106no effect. The @code{condition-case} form makes a difference when an
1107error occurs during @var{protected-form}.
1108
1109Each of the @var{handlers} is a list of the form @code{(@var{conditions}
1110@var{body}@dots{})}. Here @var{conditions} is an error condition name
1111to be handled, or a list of condition names (which can include @code{debug}
1112to allow the debugger to run before the handler); @var{body} is one or more
1113Lisp expressions to be executed when this handler handles an error.
1114Here are examples of handlers:
1115
ddff3351 1116@example
b8d4c8d0
GM
1117@group
1118(error nil)
1119
1120(arith-error (message "Division by zero"))
1121
1122((arith-error file-error)
1123 (message
1124 "Either division by zero or failure to open a file"))
1125@end group
ddff3351 1126@end example
b8d4c8d0
GM
1127
1128Each error that occurs has an @dfn{error symbol} that describes what
54bd972f
SM
1129kind of error it is, and which describes also a list of condition names
1130(@pxref{Error Symbols}). Emacs
b8d4c8d0
GM
1131searches all the active @code{condition-case} forms for a handler that
1132specifies one or more of these condition names; the innermost matching
1133@code{condition-case} handles the error. Within this
1134@code{condition-case}, the first applicable handler handles the error.
1135
1136After executing the body of the handler, the @code{condition-case}
1137returns normally, using the value of the last form in the handler body
1138as the overall value.
1139
1140@cindex error description
1141The argument @var{var} is a variable. @code{condition-case} does not
1142bind this variable when executing the @var{protected-form}, only when it
1143handles an error. At that time, it binds @var{var} locally to an
1144@dfn{error description}, which is a list giving the particulars of the
1145error. The error description has the form @code{(@var{error-symbol}
1146. @var{data})}. The handler can refer to this list to decide what to
1147do. For example, if the error is for failure opening a file, the file
1148name is the second element of @var{data}---the third element of the
1149error description.
1150
1151If @var{var} is @code{nil}, that means no variable is bound. Then the
1152error symbol and associated data are not available to the handler.
7a1831cf
EZ
1153
1154@cindex rethrow a signal
1155Sometimes it is necessary to re-throw a signal caught by
1156@code{condition-case}, for some outer-level handler to catch. Here's
1157how to do that:
1158
ddff3351 1159@example
7a1831cf 1160 (signal (car err) (cdr err))
ddff3351 1161@end example
7a1831cf
EZ
1162
1163@noindent
1164where @code{err} is the error description variable, the first argument
1165to @code{condition-case} whose error condition you want to re-throw.
1166@xref{Definition of signal}.
b8d4c8d0
GM
1167@end defspec
1168
ee301a7a 1169@defun error-message-string error-descriptor
b8d4c8d0
GM
1170This function returns the error message string for a given error
1171descriptor. It is useful if you want to handle an error by printing the
1172usual error message for that error. @xref{Definition of signal}.
1173@end defun
1174
1175@cindex @code{arith-error} example
1176Here is an example of using @code{condition-case} to handle the error
1177that results from dividing by zero. The handler displays the error
1178message (but without a beep), then returns a very large number.
1179
ddff3351 1180@example
b8d4c8d0
GM
1181@group
1182(defun safe-divide (dividend divisor)
1183 (condition-case err
1184 ;; @r{Protected form.}
1185 (/ dividend divisor)
1186@end group
1187@group
1188 ;; @r{The handler.}
1189 (arith-error ; @r{Condition.}
1190 ;; @r{Display the usual message for this error.}
1191 (message "%s" (error-message-string err))
1192 1000000)))
1193@result{} safe-divide
1194@end group
1195
1196@group
1197(safe-divide 5 0)
1198 @print{} Arithmetic error: (arith-error)
1199@result{} 1000000
1200@end group
ddff3351 1201@end example
b8d4c8d0
GM
1202
1203@noindent
ddff3351
GM
1204The handler specifies condition name @code{arith-error} so that it
1205will handle only division-by-zero errors. Other kinds of errors will
1206not be handled (by this @code{condition-case}). Thus:
b8d4c8d0 1207
ddff3351 1208@example
b8d4c8d0
GM
1209@group
1210(safe-divide nil 3)
1211 @error{} Wrong type argument: number-or-marker-p, nil
1212@end group
ddff3351 1213@end example
b8d4c8d0
GM
1214
1215 Here is a @code{condition-case} that catches all kinds of errors,
ddff3351 1216including those from @code{error}:
b8d4c8d0 1217
ddff3351 1218@example
b8d4c8d0
GM
1219@group
1220(setq baz 34)
1221 @result{} 34
1222@end group
1223
1224@group
1225(condition-case err
1226 (if (eq baz 35)
1227 t
1228 ;; @r{This is a call to the function @code{error}.}
1229 (error "Rats! The variable %s was %s, not 35" 'baz baz))
1230 ;; @r{This is the handler; it is not a form.}
1231 (error (princ (format "The error was: %s" err))
1232 2))
1233@print{} The error was: (error "Rats! The variable baz was 34, not 35")
1234@result{} 2
1235@end group
ddff3351 1236@end example
b8d4c8d0 1237
a33a1f2a
EZ
1238@defmac ignore-errors body@dots{}
1239This construct executes @var{body}, ignoring any errors that occur
1240during its execution. If the execution is without error,
1241@code{ignore-errors} returns the value of the last form in @var{body};
1242otherwise, it returns @code{nil}.
1243
1244Here's the example at the beginning of this subsection rewritten using
1245@code{ignore-errors}:
1246
ddff3351 1247@example
a33a1f2a
EZ
1248@group
1249 (ignore-errors
1250 (delete-file filename))
1251@end group
ddff3351 1252@end example
a33a1f2a
EZ
1253@end defmac
1254
1e548e40 1255@defmac with-demoted-errors format body@dots{}
866c1d22
GM
1256This macro is like a milder version of @code{ignore-errors}. Rather
1257than suppressing errors altogether, it converts them into messages.
1e548e40
GM
1258It uses the string @var{format} to format the message.
1259@var{format} should contain a single @samp{%}-sequence; e.g.,
1260@code{"Error: %S"}. Use @code{with-demoted-errors} around code
1261that is not expected to signal errors, but
1be3ca5a
LL
1262should be robust if one does occur. Note that this macro uses
1263@code{condition-case-unless-debug} rather than @code{condition-case}.
866c1d22 1264@end defmac
7a1831cf 1265
b8d4c8d0
GM
1266@node Error Symbols
1267@subsubsection Error Symbols and Condition Names
1268@cindex error symbol
1269@cindex error name
1270@cindex condition name
1271@cindex user-defined error
1272@kindex error-conditions
54bd972f 1273@kindex define-error
b8d4c8d0
GM
1274
1275 When you signal an error, you specify an @dfn{error symbol} to specify
1276the kind of error you have in mind. Each error has one and only one
1277error symbol to categorize it. This is the finest classification of
1278errors defined by the Emacs Lisp language.
1279
1280 These narrow classifications are grouped into a hierarchy of wider
1281classes called @dfn{error conditions}, identified by @dfn{condition
1282names}. The narrowest such classes belong to the error symbols
1283themselves: each error symbol is also a condition name. There are also
1284condition names for more extensive classes, up to the condition name
1285@code{error} which takes in all kinds of errors (but not @code{quit}).
1286Thus, each error has one or more condition names: @code{error}, the
1287error symbol if that is distinct from @code{error}, and perhaps some
1288intermediate classifications.
1289
54bd972f
SM
1290@defun define-error name message &optional parent
1291 In order for a symbol to be an error symbol, it must be defined with
1292@code{define-error} which takes a parent condition (defaults to @code{error}).
1293This parent defines the conditions that this kind of error belongs to.
1294The transitive set of parents always includes the error symbol itself, and the
1295symbol @code{error}. Because quitting is not considered an error, the set of
1296parents of @code{quit} is just @code{(quit)}.
4517cbc2 1297@end defun
b8d4c8d0
GM
1298
1299@cindex peculiar error
4517cbc2 1300 In addition to its parents, the error symbol has a @var{message} which
54bd972f
SM
1301is a string to be printed when that error is signaled but not handled. If that
1302message is not valid, the error message @samp{peculiar error} is used.
1303@xref{Definition of signal}.
1304
1305Internally, the set of parents is stored in the @code{error-conditions}
1306property of the error symbol and the message is stored in the
1307@code{error-message} property of the error symbol.
b8d4c8d0
GM
1308
1309 Here is how we define a new error symbol, @code{new-error}:
1310
1311@example
1312@group
54bd972f 1313(define-error 'new-error "A new error" 'my-own-errors)
b8d4c8d0
GM
1314@end group
1315@end example
1316
1317@noindent
54bd972f 1318This error has several condition names: @code{new-error}, the narrowest
b8d4c8d0 1319classification; @code{my-own-errors}, which we imagine is a wider
54bd972f
SM
1320classification; and all the conditions of @code{my-own-errors} which should
1321include @code{error}, which is the widest of all.
b8d4c8d0
GM
1322
1323 The error string should start with a capital letter but it should
1324not end with a period. This is for consistency with the rest of Emacs.
1325
1326 Naturally, Emacs will never signal @code{new-error} on its own; only
1327an explicit call to @code{signal} (@pxref{Definition of signal}) in
1328your code can do this:
1329
1330@example
1331@group
1332(signal 'new-error '(x y))
1333 @error{} A new error: x, y
1334@end group
1335@end example
1336
54bd972f 1337 This error can be handled through any of its condition names.
b8d4c8d0
GM
1338This example handles @code{new-error} and any other errors in the class
1339@code{my-own-errors}:
1340
1341@example
1342@group
1343(condition-case foo
1344 (bar nil t)
1345 (my-own-errors nil))
1346@end group
1347@end example
1348
1349 The significant way that errors are classified is by their condition
1350names---the names used to match errors with handlers. An error symbol
1351serves only as a convenient way to specify the intended error message
1352and list of condition names. It would be cumbersome to give
1353@code{signal} a list of condition names rather than one error symbol.
1354
1355 By contrast, using only error symbols without condition names would
1356seriously decrease the power of @code{condition-case}. Condition names
1357make it possible to categorize errors at various levels of generality
1358when you write an error handler. Using error symbols alone would
1359eliminate all but the narrowest level of classification.
1360
7e05b1ec 1361 @xref{Standard Errors}, for a list of the main error symbols
b8d4c8d0
GM
1362and their conditions.
1363
1364@node Cleanups
1365@subsection Cleaning Up from Nonlocal Exits
1366
1367 The @code{unwind-protect} construct is essential whenever you
1368temporarily put a data structure in an inconsistent state; it permits
1369you to make the data consistent again in the event of an error or
1370throw. (Another more specific cleanup construct that is used only for
1371changes in buffer contents is the atomic change group; @ref{Atomic
1372Changes}.)
1373
1374@defspec unwind-protect body-form cleanup-forms@dots{}
1375@cindex cleanup forms
1376@cindex protected forms
1377@cindex error cleanup
1378@cindex unwinding
1379@code{unwind-protect} executes @var{body-form} with a guarantee that
1380the @var{cleanup-forms} will be evaluated if control leaves
1381@var{body-form}, no matter how that happens. @var{body-form} may
1382complete normally, or execute a @code{throw} out of the
1383@code{unwind-protect}, or cause an error; in all cases, the
1384@var{cleanup-forms} will be evaluated.
1385
1386If @var{body-form} finishes normally, @code{unwind-protect} returns the
1387value of @var{body-form}, after it evaluates the @var{cleanup-forms}.
1388If @var{body-form} does not finish, @code{unwind-protect} does not
1389return any value in the normal sense.
1390
1391Only @var{body-form} is protected by the @code{unwind-protect}. If any
1392of the @var{cleanup-forms} themselves exits nonlocally (via a
1393@code{throw} or an error), @code{unwind-protect} is @emph{not}
1394guaranteed to evaluate the rest of them. If the failure of one of the
1395@var{cleanup-forms} has the potential to cause trouble, then protect
1396it with another @code{unwind-protect} around that form.
1397
1398The number of currently active @code{unwind-protect} forms counts,
1399together with the number of local variable bindings, against the limit
1400@code{max-specpdl-size} (@pxref{Definition of max-specpdl-size,, Local
1401Variables}).
1402@end defspec
1403
1404 For example, here we make an invisible buffer for temporary use, and
1405make sure to kill it before finishing:
1406
ddff3351 1407@example
b8d4c8d0 1408@group
c57008f6
SM
1409(let ((buffer (get-buffer-create " *temp*")))
1410 (with-current-buffer buffer
b8d4c8d0
GM
1411 (unwind-protect
1412 @var{body-form}
1413 (kill-buffer buffer))))
1414@end group
ddff3351 1415@end example
b8d4c8d0
GM
1416
1417@noindent
1418You might think that we could just as well write @code{(kill-buffer
1419(current-buffer))} and dispense with the variable @code{buffer}.
1420However, the way shown above is safer, if @var{body-form} happens to
1421get an error after switching to a different buffer! (Alternatively,
c57008f6 1422you could write a @code{save-current-buffer} around @var{body-form},
b8d4c8d0
GM
1423to ensure that the temporary buffer becomes current again in time to
1424kill it.)
1425
1426 Emacs includes a standard macro called @code{with-temp-buffer} which
1427expands into more or less the code shown above (@pxref{Definition of
1428with-temp-buffer,, Current Buffer}). Several of the macros defined in
1429this manual use @code{unwind-protect} in this way.
1430
1431@findex ftp-login
1432 Here is an actual example derived from an FTP package. It creates a
1433process (@pxref{Processes}) to try to establish a connection to a remote
1434machine. As the function @code{ftp-login} is highly susceptible to
1435numerous problems that the writer of the function cannot anticipate, it
1436is protected with a form that guarantees deletion of the process in the
1437event of failure. Otherwise, Emacs might fill up with useless
1438subprocesses.
1439
ddff3351 1440@example
b8d4c8d0
GM
1441@group
1442(let ((win nil))
1443 (unwind-protect
1444 (progn
1445 (setq process (ftp-setup-buffer host file))
1446 (if (setq win (ftp-login process host user password))
1447 (message "Logged in")
1448 (error "Ftp login failed")))
1449 (or win (and process (delete-process process)))))
1450@end group
ddff3351 1451@end example
b8d4c8d0
GM
1452
1453 This example has a small bug: if the user types @kbd{C-g} to
1454quit, and the quit happens immediately after the function
1455@code{ftp-setup-buffer} returns but before the variable @code{process} is
1456set, the process will not be killed. There is no easy way to fix this bug,
1457but at least it is very unlikely.