<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 98.2 beta6 (August 14th, 1998)
original version by:  Nikos Drakos, CBLU, University of Leeds
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>6.8 The raise statement </TITLE>
<META NAME="description" CONTENT="6.8 The raise statement ">
<META NAME="keywords" CONTENT="ref">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<LINK REL="STYLESHEET" HREF="ref.css">
<LINK REL="next" HREF="break.html">
<LINK REL="previous" HREF="return.html">
<LINK REL="up" HREF="simple.html">
<LINK REL="next" HREF="break.html">
</HEAD>
<BODY bgcolor="#ffffff">
<div class=navigation>
<table align=center width="100%" cellpadding=0 cellspacing=2>
<tr>
<td><A HREF="break.html"><img width=32 height=32 align=bottom border=0 alt="next"
 src="../icons/next.gif"></A></td>
<td><A HREF="simple.html"><img width=32 height=32 align=bottom border=0 alt="up"
 src="../icons/up.gif"></A></td>
<td><A HREF="return.html"><img width=32 height=32 align=bottom border=0 alt="previous"
 src="../icons/previous.gif"></A></td>
<td align=center bgcolor="#99CCFF" width="100%">
 <b class=title>Python Reference Manual</b></td>
<td><A HREF="contents.html"><img width=32 height=32 align=bottom border=0 alt="contents"
 src="../icons/contents.gif"></A></td>
<td><img width=32 height=32 align=bottom border=0 alt=""
 src="../icons/blank.gif"></td>
<td><A HREF="genindex.html"><img width=32 height=32 align=bottom border=0 alt="index"
 src="../icons/index.gif"></A></td>
</tr></table><b class=navlabel>Next:</b> <span class=sectref><A HREF="break.html">6.9 The break statement</A></span>
<b class=navlabel>Up:</b> <span class=sectref><A HREF="simple.html">6. Simple statements</A></span>
<b class=navlabel>Previous:</b> <span class=sectref><A HREF="return.html">6.7 The return statement</A></span>
<br><hr></div>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION008800000000000000000"></A>
<BR>
6.8 The <tt class=keyword>raise</tt> statement 
</H1>
<a name="l2h-615"></a>

<P>
<dl><dd><pre class=verbatim>
raise_stmt:     "raise" [expression ["," expression ["," expression]]]
</pre></dl>

<P>
If no expressions are present, <tt class=keyword>raise</tt> re-raises the last
expression that was raised in the current scope.

<P>
Otherwise, <tt class=keyword>raise</tt> evaluates its first expression, which must yield
a string, class, or instance object.  If there is a second expression,
this is evaluated, else <tt>None</tt> is substituted.  If the first
expression is a class object, then the second expression may be an
instance of that class or one of its derivatives, and then that
instance is raised.  If the second expression is not such an instance,
the given class is instantiated.  The argument list for the
instantiation is determined as follows: if the second expression is a
tuple, it is used as the argument list; if it is <tt>None</tt>, the
argument list is empty; otherwise, the argument list consists of a
single argument which is the second expression.  If the first
expression is an instance object, the second expression must be
<tt>None</tt>.
<a name="l2h-616"></a>
<a name="l2h-617"></a>

<P>
If the first object is a string, it then raises the exception
identified by the first object, with the second one (or <tt>None</tt>)
as its parameter.  If the first object is a class or instance,
it raises the exception identified by the class of the instance
determined in the previous step, with the instance as
its parameter.

<P>
If a third object is present, and it is not <tt>None</tt>, it should be
a traceback object (see section <A HREF="types.html#traceback">3.2</A>), and it is
substituted instead of the current location as the place where the
exception occurred.  This is useful to re-raise an exception
transparently in an except clause.
<a name="l2h-618"></a>

<P>
<p>
<div class=navigation><hr><table align=center width="100%" cellpadding=0 cellspacing=2>
<tr>
<td><A HREF="break.html"><img width=32 height=32 align=bottom border=0 alt="next"
 src="../icons/next.gif"></A></td>
<td><A HREF="simple.html"><img width=32 height=32 align=bottom border=0 alt="up"
 src="../icons/up.gif"></A></td>
<td><A HREF="return.html"><img width=32 height=32 align=bottom border=0 alt="previous"
 src="../icons/previous.gif"></A></td>
<td align=center bgcolor="#99CCFF" width="100%">
 <b class=title>Python Reference Manual</b></td>
<td><A HREF="contents.html"><img width=32 height=32 align=bottom border=0 alt="contents"
 src="../icons/contents.gif"></A></td>
<td><img width=32 height=32 align=bottom border=0 alt=""
 src="../icons/blank.gif"></td>
<td><A HREF="genindex.html"><img width=32 height=32 align=bottom border=0 alt="index"
 src="../icons/index.gif"></A></td>
</tr></table><b class=navlabel>Next:</b> <span class=sectref><A HREF="break.html">6.9 The break statement</A></span>
<b class=navlabel>Up:</b> <span class=sectref><A HREF="simple.html">6. Simple statements</A></span>
<b class=navlabel>Previous:</b> <span class=sectref><A HREF="return.html">6.7 The return statement</A></span>
</div>
<!--End of Navigation Panel-->
<ADDRESS>
<hr>Send comments on this document to <a href="mailto:python-docs@python.org">python-docs@python.org</a>.
</ADDRESS>
</BODY>
</HTML>
