summaryrefslogtreecommitdiffstats
path: root/Doc/ref
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1998-08-25 14:45:41 (GMT)
committerGuido van Rossum <guido@python.org>1998-08-25 14:45:41 (GMT)
commitf5a80a4a8806fc293ac8de95ea6d304347af784e (patch)
tree197cda7a164fdfd5ee896519e9c877a4e08e2967 /Doc/ref
parentdbf7956e522164518179be6682c74205fda2c7fe (diff)
downloadcpython-f5a80a4a8806fc293ac8de95ea6d304347af784e.zip
cpython-f5a80a4a8806fc293ac8de95ea6d304347af784e.tar.gz
cpython-f5a80a4a8806fc293ac8de95ea6d304347af784e.tar.bz2
Describe what happens when ``raise C, x'' is called where C is a class
and x is not an instance of C (nor of a class derived of C).
Diffstat (limited to 'Doc/ref')
-rw-r--r--Doc/ref/ref6.tex20
1 files changed, 13 insertions, 7 deletions
diff --git a/Doc/ref/ref6.tex b/Doc/ref/ref6.tex
index b810056..1748202 100644
--- a/Doc/ref/ref6.tex
+++ b/Doc/ref/ref6.tex
@@ -366,19 +366,25 @@ expression that was raised in the current scope.
Otherwose, \keyword{raise} evaluates its first expression, which must yield
a string, class, or instance object. If there is a second expression,
this is evaluated, else \code{None} is substituted. If the first
-expression is a class object, then the second expression must be an
-instance of that class or one of its derivatives. 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 \code{None}, 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
\code{None}.
\index{exception}
\indexii{raising}{exception}
-If the first object is a class or string, it then raises the exception
+If the first object is a string, it then raises the exception
identified by the first object, with the second one (or \code{None})
-as its parameter. If the first object is an instance, it raises the
-exception identified by the class of the object, with the instance as
-its parameter (and there should be no second object, or the second
-object should be \code{None}).
+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.
If a third object is present, and it is not \code{None}, it should be
a traceback object (see section \ref{traceback}), and it is