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