diff Doc/api/exceptions.tex @ 21160:73384e13bd2a legacy-trunk

Clarify that the Python runtime may behave mysteriously when an exception is not handled properly. This closes SF bug #485153.
author Fred Drake <fdrake@acm.org>
date Mon, 03 Dec 2001 17:56:09 +0000
parents 9fecba526936
children 1c838be6d004 0f1ae37cd8eb
line wrap: on
line diff
--- a/Doc/api/exceptions.tex	Mon Dec 03 17:32:27 2001 +0000
+++ b/Doc/api/exceptions.tex	Mon Dec 03 17:56:09 2001 +0000
@@ -8,11 +8,19 @@
 this on success, but will set it to indicate the cause of the error on
 failure.  Most functions also return an error indicator, usually
 \NULL{} if they are supposed to return a pointer, or \code{-1} if they
-return an integer (exception: the \cfunction{PyArg_Parse*()} functions
-return \code{1} for success and \code{0} for failure).  When a
-function must fail because some function it called failed, it
+return an integer (exception: the \cfunction{PyArg_*()} functions
+return \code{1} for success and \code{0} for failure).
+
+When a function must fail because some function it called failed, it
 generally doesn't set the error indicator; the function it called
-already set it.
+already set it.  It is responsible for either handling the error and
+clearing the exception or returning after cleaning up any resources it
+holds (such as object references or memory allocations); it should
+\emph{not} continue normally if it is not prepared to handle the
+error.  If returning due to an error, it is important to indicate to
+the caller that an error has been set.  If the error is not handled or
+carefully propogated, additional calls into the Python/C API may not
+behave as intended and may fail in mysterious ways.
 
 The error indicator consists of three Python objects corresponding to
 \withsubitem{(in module sys)}{