167 lines
6.6 KiB
HTML
167 lines
6.6 KiB
HTML
![]() |
<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 2.0//EN">
|
||
|
<!Converted with LaTeX2HTML 0.6.5 (Tue Nov 15 1994) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds >
|
||
|
<HEAD>
|
||
|
<TITLE>28.1.1. Error Terminology</TITLE>
|
||
|
</HEAD>
|
||
|
<BODY>
|
||
|
<meta name="description" value=" Error Terminology">
|
||
|
<meta name="keywords" value="clm">
|
||
|
<meta name="resource-type" value="document">
|
||
|
<meta name="distribution" value="global">
|
||
|
<P>
|
||
|
<b>Common Lisp the Language, 2nd Edition</b>
|
||
|
<BR> <HR><A NAME=tex2html4934 HREF="node263.html"><IMG ALIGN=BOTTOM ALT="next" SRC="icons/next_motif.gif"></A> <A NAME=tex2html4932 HREF="node261.html"><IMG ALIGN=BOTTOM ALT="up" SRC="icons/up_motif.gif"></A> <A NAME=tex2html4926 HREF="node261.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="icons/previous_motif.gif"></A> <A NAME=tex2html4936 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="icons/contents_motif.gif"></A> <A NAME=tex2html4937 HREF="index.html"><IMG ALIGN=BOTTOM ALT="index" SRC="icons/index_motif.gif"></A> <BR>
|
||
|
<B> Next:</B> <A NAME=tex2html4935 HREF="node263.html"> Classes</A>
|
||
|
<B>Up:</B> <A NAME=tex2html4933 HREF="node261.html"> Programmer Interface Concepts</A>
|
||
|
<B> Previous:</B> <A NAME=tex2html4927 HREF="node261.html"> Programmer Interface Concepts</A>
|
||
|
<HR> <P>
|
||
|
<H2><A NAME=SECTION003211000000000000000>28.1.1. Error Terminology</A></H2>
|
||
|
<P>
|
||
|
<img align=bottom alt="change_begin" src="gif/change_begin.gif"><br>
|
||
|
<A NAME=ErrorTerminologySECTION>The</A>
|
||
|
terminology used in this chapter to describe erroneous
|
||
|
situations differs from the terminology used in the first edition.
|
||
|
The new terminology involves <i>situations</i>;
|
||
|
a situation is the evaluation of an expression in some
|
||
|
specific context. For example, a situation might be the invocation of
|
||
|
a function on arguments that fail to satisfy some specified
|
||
|
constraints.
|
||
|
<P>
|
||
|
In the specification of the Common Lisp Object System, the behavior of programs in all situations
|
||
|
is described, and the options available to the implementor are defined. No
|
||
|
implementation is allowed to extend the syntax or semantics of the Object System except
|
||
|
as explicitly defined in the Object System specification. In particular, no
|
||
|
implementation is allowed to extend the syntax of the Object System in such a way that
|
||
|
ambiguity between the specified syntax of the Object System and those extensions is
|
||
|
possible.
|
||
|
<P>
|
||
|
<DL COMPACT><DT>``When situation <i>S</i> occurs, an error is signaled.''
|
||
|
<DD>
|
||
|
<P>
|
||
|
This terminology has the following meaning:
|
||
|
<P>
|
||
|
<UL><LI> If this situation occurs, an error will be signaled in
|
||
|
the interpreter and in code compiled under all compiler safety
|
||
|
optimization levels.
|
||
|
<P>
|
||
|
<LI> Valid programs may rely on the fact that an error will be
|
||
|
signaled in the interpreter and in code compiled under all compiler
|
||
|
safety optimization levels.
|
||
|
<P>
|
||
|
<LI> Every implementation is required to detect such an error
|
||
|
in the interpreter and in code compiled under all compiler safety
|
||
|
optimization levels.
|
||
|
<P>
|
||
|
</UL>
|
||
|
<P>
|
||
|
<DT>``When situation <i>S</i> occurs, an error should be signaled.''
|
||
|
<DD>
|
||
|
<P>
|
||
|
This terminology has the following meaning:
|
||
|
<P>
|
||
|
<UL><LI> If this situation occurs, an error will be signaled at
|
||
|
least in the interpreter and in code compiled under the safest
|
||
|
compiler safety optimization level.
|
||
|
<P>
|
||
|
<LI> Valid programs may not rely on the fact that an error will be
|
||
|
signaled.
|
||
|
<P>
|
||
|
<LI> Every implementation is required to detect such an error
|
||
|
at least in the interpreter and in code compiled under the safest
|
||
|
compiler safety optimization level.
|
||
|
<P>
|
||
|
<LI> When an error is not signaled, the results are undefined (see
|
||
|
below).
|
||
|
<P>
|
||
|
</UL>
|
||
|
<P>
|
||
|
<DT>``When situation <i>S</i> occurs, the results are undefined.''
|
||
|
<DD>
|
||
|
<P>
|
||
|
This terminology has the following meaning:
|
||
|
<P>
|
||
|
<UL><LI> If this situation occurs, the results are unpredictable. The
|
||
|
results may range from harmless to fatal.
|
||
|
<P>
|
||
|
<LI> Implementations are allowed to detect this situation and
|
||
|
signal an error, but no implementation is required to detect the
|
||
|
situation.
|
||
|
<P>
|
||
|
<LI> No valid program may depend on the effects of this
|
||
|
situation, and all valid programs are required to treat the effects
|
||
|
of this situation as unpredictable.
|
||
|
<P>
|
||
|
</UL>
|
||
|
<P>
|
||
|
<DT>``When situation <i>S</i> occurs, the results are unspecified.''
|
||
|
<DD>
|
||
|
<P>
|
||
|
This terminology has the following meaning:
|
||
|
<P>
|
||
|
<UL><LI> The effects of this situation are not specified in
|
||
|
the Object System, but the effects are harmless.
|
||
|
<P>
|
||
|
<LI> Implementations are allowed to specify the effects of
|
||
|
this situation.
|
||
|
<P>
|
||
|
<LI> No portable program can depend on the effects of this
|
||
|
situation, and all portable programs are required to treat the situation
|
||
|
as unpredictable but harmless.
|
||
|
<P>
|
||
|
</UL>
|
||
|
<P>
|
||
|
<DT>``The Common Lisp Object System may be extended to cover situation <i>S</i>.''
|
||
|
<DD>
|
||
|
<P>
|
||
|
The meaning of this terminology is that an implementation is free to treat
|
||
|
situation <i>S</i> in one of three ways:
|
||
|
<P>
|
||
|
<UL><LI> When situation <i>S</i> occurs, an error is signaled at least
|
||
|
in the interpreter and in code compiled under the safest compiler
|
||
|
safety optimization level.
|
||
|
<P>
|
||
|
<LI> When situation <i>S</i> occurs, the results are undefined.
|
||
|
<P>
|
||
|
<LI> When situation <i>S</i> occurs, the results are defined and
|
||
|
specified.
|
||
|
<P>
|
||
|
</UL>
|
||
|
<P>
|
||
|
In addition, this terminology has the following meaning:
|
||
|
<P>
|
||
|
<UL><LI> No portable program can depend on the effects of this
|
||
|
situation, and all portable programs are required to treat the situation
|
||
|
as undefined.
|
||
|
<P>
|
||
|
</UL>
|
||
|
<P>
|
||
|
<DT>``Implementations are free to extend the syntax <i>S</i>.''
|
||
|
<DD>
|
||
|
<P>
|
||
|
This terminology has the following meaning:
|
||
|
<P>
|
||
|
<UL><LI> Implementations are allowed to define unambiguous extensions
|
||
|
to syntax <i>S</i>.
|
||
|
<P>
|
||
|
<LI> No portable program can depend on this extension, and
|
||
|
all portable programs are required to treat the syntax
|
||
|
as meaningless.
|
||
|
<P>
|
||
|
</UL>
|
||
|
<P>
|
||
|
</DL>
|
||
|
<P>
|
||
|
The Common Lisp Object System specification may disallow certain extensions while allowing others.
|
||
|
<br><img align=bottom alt="change_end" src="gif/change_end.gif">
|
||
|
<P>
|
||
|
<BR> <HR><A NAME=tex2html4934 HREF="node263.html"><IMG ALIGN=BOTTOM ALT="next" SRC="icons/next_motif.gif"></A> <A NAME=tex2html4932 HREF="node261.html"><IMG ALIGN=BOTTOM ALT="up" SRC="icons/up_motif.gif"></A> <A NAME=tex2html4926 HREF="node261.html"><IMG ALIGN=BOTTOM ALT="previous" SRC="icons/previous_motif.gif"></A> <A NAME=tex2html4936 HREF="node1.html"><IMG ALIGN=BOTTOM ALT="contents" SRC="icons/contents_motif.gif"></A> <A NAME=tex2html4937 HREF="index.html"><IMG ALIGN=BOTTOM ALT="index" SRC="icons/index_motif.gif"></A> <BR>
|
||
|
<B> Next:</B> <A NAME=tex2html4935 HREF="node263.html"> Classes</A>
|
||
|
<B>Up:</B> <A NAME=tex2html4933 HREF="node261.html"> Programmer Interface Concepts</A>
|
||
|
<B> Previous:</B> <A NAME=tex2html4927 HREF="node261.html"> Programmer Interface Concepts</A>
|
||
|
<HR> <P>
|
||
|
<HR>
|
||
|
<P><ADDRESS>
|
||
|
AI.Repository@cs.cmu.edu
|
||
|
</ADDRESS>
|
||
|
</BODY>
|