]> granicus.if.org Git - python/commitdiff
Describe what happens when ``raise C, x'' is called where C is a class
authorGuido van Rossum <guido@python.org>
Tue, 25 Aug 1998 14:45:41 +0000 (14:45 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 25 Aug 1998 14:45:41 +0000 (14:45 +0000)
and x is not an instance of C (nor of a class derived of C).

Doc/ref/ref6.tex

index b810056f531918de6e92bad2e7b45e6d408a7f0e..1748202bbd365c72e491af4e42c95a4b6d065297 100644 (file)
@@ -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