Commit aa061137 authored by Andrew Svetlov's avatar Andrew Svetlov

Issue #16714: use 'raise' exceptions, don't 'throw'.

Patch by Serhiy Storchaka.
parent 60988bb2
...@@ -253,7 +253,7 @@ behave slightly differently from real Capsules. Specifically: ...@@ -253,7 +253,7 @@ behave slightly differently from real Capsules. Specifically:
* :c:func:`PyCapsule_GetName` always returns NULL. * :c:func:`PyCapsule_GetName` always returns NULL.
* :c:func:`PyCapsule_SetName` always throws an exception and * :c:func:`PyCapsule_SetName` always raises an exception and
returns failure. (Since there's no way to store a name returns failure. (Since there's no way to store a name
in a CObject, noisy failure of :c:func:`PyCapsule_SetName` in a CObject, noisy failure of :c:func:`PyCapsule_SetName`
was deemed preferable to silent failure here. If this is was deemed preferable to silent failure here. If this is
......
...@@ -393,7 +393,7 @@ class dispatcher: ...@@ -393,7 +393,7 @@ class dispatcher:
else: else:
return data return data
except socket.error, why: except socket.error, why:
# winsock sometimes throws ENOTCONN # winsock sometimes raises ENOTCONN
if why.args[0] in _DISCONNECTED: if why.args[0] in _DISCONNECTED:
self.handle_close() self.handle_close()
return '' return ''
......
...@@ -104,7 +104,7 @@ class msvc9compilerTestCase(support.TempdirManager, ...@@ -104,7 +104,7 @@ class msvc9compilerTestCase(support.TempdirManager,
unittest.TestCase): unittest.TestCase):
def test_no_compiler(self): def test_no_compiler(self):
# makes sure query_vcvarsall throws # makes sure query_vcvarsall raises
# a DistutilsPlatformError if the compiler # a DistutilsPlatformError if the compiler
# is not found # is not found
from distutils.msvc9compiler import query_vcvarsall from distutils.msvc9compiler import query_vcvarsall
......
...@@ -13,7 +13,7 @@ parser. It returns when there's nothing more it can do with the available ...@@ -13,7 +13,7 @@ parser. It returns when there's nothing more it can do with the available
data. When you have no more data to push into the parser, call .close(). data. When you have no more data to push into the parser, call .close().
This completes the parsing and returns the root message object. This completes the parsing and returns the root message object.
The other advantage of this parser is that it will never throw a parsing The other advantage of this parser is that it will never raise a parsing
exception. Instead, when it finds something unexpected, it adds a 'defect' to exception. Instead, when it finds something unexpected, it adds a 'defect' to
the current message. Defects are just instances that live on the message the current message. Defects are just instances that live on the message
object's .defects attribute. object's .defects attribute.
...@@ -214,7 +214,7 @@ class FeedParser: ...@@ -214,7 +214,7 @@ class FeedParser:
# supposed to see in the body of the message. # supposed to see in the body of the message.
self._parse_headers(headers) self._parse_headers(headers)
# Headers-only parsing is a backwards compatibility hack, which was # Headers-only parsing is a backwards compatibility hack, which was
# necessary in the older parser, which could throw errors. All # necessary in the older parser, which could raise errors. All
# remaining lines in the input are thrown into the message body. # remaining lines in the input are thrown into the message body.
if self._headersonly: if self._headersonly:
lines = [] lines = []
......
...@@ -103,7 +103,7 @@ def decode_header(header): ...@@ -103,7 +103,7 @@ def decode_header(header):
dec = email.base64mime.decode(encoded) dec = email.base64mime.decode(encoded)
except binascii.Error: except binascii.Error:
# Turn this into a higher level exception. BAW: Right # Turn this into a higher level exception. BAW: Right
# now we throw the lower level exception away but # now we raise the lower level exception away but
# when/if we get exception chaining, we'll preserve it. # when/if we get exception chaining, we'll preserve it.
raise HeaderParseError raise HeaderParseError
if dec is None: if dec is None:
......
...@@ -1068,7 +1068,7 @@ class HTTP: ...@@ -1068,7 +1068,7 @@ class HTTP:
if port == 0: if port == 0:
port = None port = None
# Note that we may pass an empty string as the host; this will throw # Note that we may pass an empty string as the host; this will raise
# an error when we attempt to connect. Presumably, the client code # an error when we attempt to connect. Presumably, the client code
# will call connect before then, with a proper host. # will call connect before then, with a proper host.
self._setup(self._connection_class(host, port, strict)) self._setup(self._connection_class(host, port, strict))
......
...@@ -4,7 +4,7 @@ builtin open function is defined in this module. ...@@ -4,7 +4,7 @@ builtin open function is defined in this module.
At the top of the I/O hierarchy is the abstract base class IOBase. It At the top of the I/O hierarchy is the abstract base class IOBase. It
defines the basic interface to a stream. Note, however, that there is no defines the basic interface to a stream. Note, however, that there is no
separation between reading and writing to streams; implementations are separation between reading and writing to streams; implementations are
allowed to throw an IOError if they do not support a given operation. allowed to raise an IOError if they do not support a given operation.
Extending IOBase is RawIOBase which deals simply with the reading and Extending IOBase is RawIOBase which deals simply with the reading and
writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide
......
...@@ -155,7 +155,7 @@ def _tkerror(err): ...@@ -155,7 +155,7 @@ def _tkerror(err):
pass pass
def _exit(code=0): def _exit(code=0):
"""Internal function. Calling it will throw the exception SystemExit.""" """Internal function. Calling it will raise the exception SystemExit."""
try: try:
code = int(code) code = int(code)
except ValueError: except ValueError:
......
...@@ -1251,7 +1251,7 @@ class Logger(Filterer): ...@@ -1251,7 +1251,7 @@ class Logger(Filterer):
all the handlers of this logger to handle the record. all the handlers of this logger to handle the record.
""" """
if _srcfile: if _srcfile:
#IronPython doesn't track Python frames, so findCaller throws an #IronPython doesn't track Python frames, so findCaller raises an
#exception on some versions of IronPython. We trap it here so that #exception on some versions of IronPython. We trap it here so that
#IronPython can use logging. #IronPython can use logging.
try: try:
......
...@@ -200,7 +200,7 @@ def _get_importer(path_name): ...@@ -200,7 +200,7 @@ def _get_importer(path_name):
pass pass
else: else:
# The following check looks a bit odd. The trick is that # The following check looks a bit odd. The trick is that
# NullImporter throws ImportError if the supplied path is a # NullImporter raises ImportError if the supplied path is a
# *valid* directory entry (and hence able to be handled # *valid* directory entry (and hence able to be handled
# by the standard import machinery) # by the standard import machinery)
try: try:
......
...@@ -50,7 +50,7 @@ class CodeopTests(unittest.TestCase): ...@@ -50,7 +50,7 @@ class CodeopTests(unittest.TestCase):
'''succeed iff str is the start of an invalid piece of code''' '''succeed iff str is the start of an invalid piece of code'''
try: try:
compile_command(str,symbol=symbol) compile_command(str,symbol=symbol)
self.fail("No exception thrown for invalid code") self.fail("No exception raised for invalid code")
except SyntaxError: except SyntaxError:
self.assertTrue(is_syntax) self.assertTrue(is_syntax)
except OverflowError: except OverflowError:
......
...@@ -100,7 +100,7 @@ class DocXMLRPCHTTPGETServer(unittest.TestCase): ...@@ -100,7 +100,7 @@ class DocXMLRPCHTTPGETServer(unittest.TestCase):
self.assertEqual(response.status, 200) self.assertEqual(response.status, 200)
self.assertEqual(response.getheader("Content-type"), "text/html") self.assertEqual(response.getheader("Content-type"), "text/html")
# Server throws an exception if we don't start to read the data # Server raises an exception if we don't start to read the data
response.read() response.read()
def test_invalid_get_response(self): def test_invalid_get_response(self):
......
...@@ -79,7 +79,7 @@ class SimpleIMAPHandler(SocketServer.StreamRequestHandler): ...@@ -79,7 +79,7 @@ class SimpleIMAPHandler(SocketServer.StreamRequestHandler):
return return
line += part line += part
except IOError: except IOError:
# ..but SSLSockets throw exceptions. # ..but SSLSockets raise exceptions.
return return
if line.endswith('\r\n'): if line.endswith('\r\n'):
break break
......
...@@ -1060,7 +1060,7 @@ class MinidomTest(unittest.TestCase): ...@@ -1060,7 +1060,7 @@ class MinidomTest(unittest.TestCase):
'<?xml version="1.0" encoding="iso-8859-15"?><foo>\xa4</foo>', '<?xml version="1.0" encoding="iso-8859-15"?><foo>\xa4</foo>',
"testEncodings - encoding EURO SIGN") "testEncodings - encoding EURO SIGN")
# Verify that character decoding errors throw exceptions instead # Verify that character decoding errors raise exceptions instead
# of crashing # of crashing
self.assertRaises(UnicodeDecodeError, parseString, self.assertRaises(UnicodeDecodeError, parseString,
'<fran\xe7ais>Comment \xe7a va ? Tr\xe8s bien ?</fran\xe7ais>') '<fran\xe7ais>Comment \xe7a va ? Tr\xe8s bien ?</fran\xe7ais>')
......
...@@ -214,33 +214,33 @@ class StatAttributeTests(unittest.TestCase): ...@@ -214,33 +214,33 @@ class StatAttributeTests(unittest.TestCase):
try: try:
result[200] result[200]
self.fail("No exception thrown") self.fail("No exception raised")
except IndexError: except IndexError:
pass pass
# Make sure that assignment fails # Make sure that assignment fails
try: try:
result.st_mode = 1 result.st_mode = 1
self.fail("No exception thrown") self.fail("No exception raised")
except (AttributeError, TypeError): except (AttributeError, TypeError):
pass pass
try: try:
result.st_rdev = 1 result.st_rdev = 1
self.fail("No exception thrown") self.fail("No exception raised")
except (AttributeError, TypeError): except (AttributeError, TypeError):
pass pass
try: try:
result.parrot = 1 result.parrot = 1
self.fail("No exception thrown") self.fail("No exception raised")
except AttributeError: except AttributeError:
pass pass
# Use the stat_result constructor with a too-short tuple. # Use the stat_result constructor with a too-short tuple.
try: try:
result2 = os.stat_result((10,)) result2 = os.stat_result((10,))
self.fail("No exception thrown") self.fail("No exception raised")
except TypeError: except TypeError:
pass pass
...@@ -274,20 +274,20 @@ class StatAttributeTests(unittest.TestCase): ...@@ -274,20 +274,20 @@ class StatAttributeTests(unittest.TestCase):
# Make sure that assignment really fails # Make sure that assignment really fails
try: try:
result.f_bfree = 1 result.f_bfree = 1
self.fail("No exception thrown") self.fail("No exception raised")
except TypeError: except TypeError:
pass pass
try: try:
result.parrot = 1 result.parrot = 1
self.fail("No exception thrown") self.fail("No exception raised")
except AttributeError: except AttributeError:
pass pass
# Use the constructor with a too-short tuple. # Use the constructor with a too-short tuple.
try: try:
result2 = os.statvfs_result((10,)) result2 = os.statvfs_result((10,))
self.fail("No exception thrown") self.fail("No exception raised")
except TypeError: except TypeError:
pass pass
......
...@@ -152,7 +152,7 @@ class PtyTest(unittest.TestCase): ...@@ -152,7 +152,7 @@ class PtyTest(unittest.TestCase):
# platform-dependent amount of data is written to its fd. On # platform-dependent amount of data is written to its fd. On
# Linux 2.6, it's 4000 bytes and the child won't block, but on OS # Linux 2.6, it's 4000 bytes and the child won't block, but on OS
# X even the small writes in the child above will block it. Also # X even the small writes in the child above will block it. Also
# on Linux, the read() will throw an OSError (input/output error) # on Linux, the read() will raise an OSError (input/output error)
# when it tries to read past the end of the buffer but the child's # when it tries to read past the end of the buffer but the child's
# already exited, so catch and discard those exceptions. It's not # already exited, so catch and discard those exceptions. It's not
# worth checking for EIO. # worth checking for EIO.
......
...@@ -294,7 +294,7 @@ class XmlgenTest(unittest.TestCase): ...@@ -294,7 +294,7 @@ class XmlgenTest(unittest.TestCase):
def test_5027_1(self): def test_5027_1(self):
# The xml prefix (as in xml:lang below) is reserved and bound by # The xml prefix (as in xml:lang below) is reserved and bound by
# definition to http://www.w3.org/XML/1998/namespace. XMLGenerator had # definition to http://www.w3.org/XML/1998/namespace. XMLGenerator had
# a bug whereby a KeyError is thrown because this namespace is missing # a bug whereby a KeyError is raised because this namespace is missing
# from a dictionary. # from a dictionary.
# #
# This test demonstrates the bug by parsing a document. # This test demonstrates the bug by parsing a document.
...@@ -320,7 +320,7 @@ class XmlgenTest(unittest.TestCase): ...@@ -320,7 +320,7 @@ class XmlgenTest(unittest.TestCase):
def test_5027_2(self): def test_5027_2(self):
# The xml prefix (as in xml:lang below) is reserved and bound by # The xml prefix (as in xml:lang below) is reserved and bound by
# definition to http://www.w3.org/XML/1998/namespace. XMLGenerator had # definition to http://www.w3.org/XML/1998/namespace. XMLGenerator had
# a bug whereby a KeyError is thrown because this namespace is missing # a bug whereby a KeyError is raised because this namespace is missing
# from a dictionary. # from a dictionary.
# #
# This test demonstrates the bug by direct manipulation of the # This test demonstrates the bug by direct manipulation of the
......
...@@ -109,7 +109,7 @@ class InterProcessSignalTests(unittest.TestCase): ...@@ -109,7 +109,7 @@ class InterProcessSignalTests(unittest.TestCase):
# This wait should be interrupted by the signal's exception. # This wait should be interrupted by the signal's exception.
self.wait(child) self.wait(child)
time.sleep(1) # Give the signal time to be delivered. time.sleep(1) # Give the signal time to be delivered.
self.fail('HandlerBCalled exception not thrown') self.fail('HandlerBCalled exception not raised')
except HandlerBCalled: except HandlerBCalled:
self.assertTrue(self.b_called) self.assertTrue(self.b_called)
self.assertFalse(self.a_called) self.assertFalse(self.a_called)
...@@ -148,7 +148,7 @@ class InterProcessSignalTests(unittest.TestCase): ...@@ -148,7 +148,7 @@ class InterProcessSignalTests(unittest.TestCase):
# test-running process from all the signals. It then # test-running process from all the signals. It then
# communicates with that child process over a pipe and # communicates with that child process over a pipe and
# re-raises information about any exceptions the child # re-raises information about any exceptions the child
# throws. The real work happens in self.run_test(). # raises. The real work happens in self.run_test().
os_done_r, os_done_w = os.pipe() os_done_r, os_done_w = os.pipe()
with closing(os.fdopen(os_done_r)) as done_r, \ with closing(os.fdopen(os_done_r)) as done_r, \
closing(os.fdopen(os_done_w, 'w')) as done_w: closing(os.fdopen(os_done_w, 'w')) as done_w:
......
...@@ -58,7 +58,7 @@ if HAVE_UNIX_SOCKETS: ...@@ -58,7 +58,7 @@ if HAVE_UNIX_SOCKETS:
def simple_subprocess(testcase): def simple_subprocess(testcase):
pid = os.fork() pid = os.fork()
if pid == 0: if pid == 0:
# Don't throw an exception; it would be caught by the test harness. # Don't raise an exception; it would be caught by the test harness.
os._exit(72) os._exit(72)
yield None yield None
pid2, status = os.waitpid(pid, 0) pid2, status = os.waitpid(pid, 0)
......
...@@ -417,7 +417,7 @@ class RaisingTraceFuncTestCase(unittest.TestCase): ...@@ -417,7 +417,7 @@ class RaisingTraceFuncTestCase(unittest.TestCase):
except ValueError: except ValueError:
pass pass
else: else:
self.fail("exception not thrown!") self.fail("exception not raised!")
except RuntimeError: except RuntimeError:
self.fail("recursion counter not reset") self.fail("recursion counter not reset")
......
...@@ -106,7 +106,7 @@ class TimeTestCase(unittest.TestCase): ...@@ -106,7 +106,7 @@ class TimeTestCase(unittest.TestCase):
def test_strptime(self): def test_strptime(self):
# Should be able to go round-trip from strftime to strptime without # Should be able to go round-trip from strftime to strptime without
# throwing an exception. # raising an exception.
tt = time.gmtime(self.t) tt = time.gmtime(self.t)
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I', for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
'j', 'm', 'M', 'p', 'S', 'j', 'm', 'M', 'p', 'S',
......
...@@ -48,7 +48,7 @@ class UUTest(unittest.TestCase): ...@@ -48,7 +48,7 @@ class UUTest(unittest.TestCase):
out = cStringIO.StringIO() out = cStringIO.StringIO()
try: try:
uu.decode(inp, out) uu.decode(inp, out)
self.fail("No exception thrown") self.fail("No exception raised")
except uu.Error, e: except uu.Error, e:
self.assertEqual(str(e), "Truncated input file") self.assertEqual(str(e), "Truncated input file")
...@@ -57,7 +57,7 @@ class UUTest(unittest.TestCase): ...@@ -57,7 +57,7 @@ class UUTest(unittest.TestCase):
out = cStringIO.StringIO() out = cStringIO.StringIO()
try: try:
uu.decode(inp, out) uu.decode(inp, out)
self.fail("No exception thrown") self.fail("No exception raised")
except uu.Error, e: except uu.Error, e:
self.assertEqual(str(e), "No valid begin line found in input file") self.assertEqual(str(e), "No valid begin line found in input file")
......
...@@ -234,7 +234,7 @@ class LocalWinregTests(BaseWinregTests): ...@@ -234,7 +234,7 @@ class LocalWinregTests(BaseWinregTests):
def test_changing_value(self): def test_changing_value(self):
# Issue2810: A race condition in 2.6 and 3.1 may cause # Issue2810: A race condition in 2.6 and 3.1 may cause
# EnumValue or QueryValue to throw "WindowsError: More data is # EnumValue or QueryValue to raise "WindowsError: More data is
# available" # available"
done = False done = False
...@@ -282,7 +282,7 @@ class LocalWinregTests(BaseWinregTests): ...@@ -282,7 +282,7 @@ class LocalWinregTests(BaseWinregTests):
def test_dynamic_key(self): def test_dynamic_key(self):
# Issue2810, when the value is dynamically generated, these # Issue2810, when the value is dynamically generated, these
# throw "WindowsError: More data is available" in 2.6 and 3.1 # raise "WindowsError: More data is available" in 2.6 and 3.1
try: try:
EnumValue(HKEY_PERFORMANCE_DATA, 0) EnumValue(HKEY_PERFORMANCE_DATA, 0)
except OSError as e: except OSError as e:
......
...@@ -811,7 +811,7 @@ class OtherTests(unittest.TestCase): ...@@ -811,7 +811,7 @@ class OtherTests(unittest.TestCase):
with zipfile.ZipFile(data, mode="w") as zipf: with zipfile.ZipFile(data, mode="w") as zipf:
zipf.writestr("foo.txt", "O, for a Muse of Fire!") zipf.writestr("foo.txt", "O, for a Muse of Fire!")
# This is correct; calling .read on a closed ZipFile should throw # This is correct; calling .read on a closed ZipFile should raise
# a RuntimeError, and so should calling .testzip. An earlier # a RuntimeError, and so should calling .testzip. An earlier
# version of .testzip would swallow this exception (and any other) # version of .testzip would swallow this exception (and any other)
# and report that the first file in the archive was corrupt. # and report that the first file in the archive was corrupt.
......
...@@ -166,7 +166,7 @@ def format_exception_only(etype, value): ...@@ -166,7 +166,7 @@ def format_exception_only(etype, value):
# >>> raise string1, string2 # deprecated # >>> raise string1, string2 # deprecated
# #
# Clear these out first because issubtype(string1, SyntaxError) # Clear these out first because issubtype(string1, SyntaxError)
# would throw another exception and mask the original problem. # would raise another exception and mask the original problem.
if (isinstance(etype, BaseException) or if (isinstance(etype, BaseException) or
isinstance(etype, types.InstanceType) or isinstance(etype, types.InstanceType) or
etype is None or type(etype) is str): etype is None or type(etype) is str):
......
...@@ -447,10 +447,10 @@ class TestCase(object): ...@@ -447,10 +447,10 @@ class TestCase(object):
def assertRaises(self, excClass, callableObj=None, *args, **kwargs): def assertRaises(self, excClass, callableObj=None, *args, **kwargs):
"""Fail unless an exception of class excClass is thrown """Fail unless an exception of class excClass is raised
by callableObj when invoked with arguments args and keyword by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is arguments kwargs. If a different type of exception is
thrown, it will not be caught, and the test case will be raised, it will not be caught, and the test case will be
deemed to have suffered an error, exactly as for an deemed to have suffered an error, exactly as for an
unexpected exception. unexpected exception.
......
...@@ -134,9 +134,9 @@ def validator(application): ...@@ -134,9 +134,9 @@ def validator(application):
When applied between a WSGI server and a WSGI application, this When applied between a WSGI server and a WSGI application, this
middleware will check for WSGI compliancy on a number of levels. middleware will check for WSGI compliancy on a number of levels.
This middleware does not modify the request or response in any This middleware does not modify the request or response in any
way, but will throw an AssertionError if anything seems off way, but will raise an AssertionError if anything seems off
(except for a failure to close the application iterator, which (except for a failure to close the application iterator, which
will be printed to stderr -- there's no way to throw an exception will be printed to stderr -- there's no way to raise an exception
at that point). at that point).
""" """
......
...@@ -12,7 +12,7 @@ class SAXException(Exception): ...@@ -12,7 +12,7 @@ class SAXException(Exception):
the application: you can subclass it to provide additional the application: you can subclass it to provide additional
functionality, or to add localization. Note that although you will functionality, or to add localization. Note that although you will
receive a SAXException as the argument to the handlers in the receive a SAXException as the argument to the handlers in the
ErrorHandler interface, you are not actually required to throw ErrorHandler interface, you are not actually required to raise
the exception; instead, you can simply read the information in the exception; instead, you can simply read the information in
it.""" it."""
...@@ -50,7 +50,7 @@ class SAXParseException(SAXException): ...@@ -50,7 +50,7 @@ class SAXParseException(SAXException):
the original XML document. Note that although the application will the original XML document. Note that although the application will
receive a SAXParseException as the argument to the handlers in the receive a SAXParseException as the argument to the handlers in the
ErrorHandler interface, the application is not actually required ErrorHandler interface, the application is not actually required
to throw the exception; instead, it can simply read the to raise the exception; instead, it can simply read the
information in it and take a different action. information in it and take a different action.
Since this exception is a subclass of SAXException, it inherits Since this exception is a subclass of SAXException, it inherits
...@@ -62,7 +62,7 @@ class SAXParseException(SAXException): ...@@ -62,7 +62,7 @@ class SAXParseException(SAXException):
self._locator = locator self._locator = locator
# We need to cache this stuff at construction time. # We need to cache this stuff at construction time.
# If this exception is thrown, the objects through which we must # If this exception is raised, the objects through which we must
# traverse to get this information may be deleted by the time # traverse to get this information may be deleted by the time
# it gets caught. # it gets caught.
self._systemId = self._locator.getSystemId() self._systemId = self._locator.getSystemId()
......
...@@ -68,7 +68,7 @@ class XMLReader: ...@@ -68,7 +68,7 @@ class XMLReader:
SAX parsers are not required to provide localization for errors SAX parsers are not required to provide localization for errors
and warnings; if they cannot support the requested locale, and warnings; if they cannot support the requested locale,
however, they must throw a SAX exception. Applications may however, they must raise a SAX exception. Applications may
request a locale change in the middle of a parse.""" request a locale change in the middle of a parse."""
raise SAXNotSupportedException("Locale support not implemented") raise SAXNotSupportedException("Locale support not implemented")
......
...@@ -945,7 +945,7 @@ class _MultiCallMethod: ...@@ -945,7 +945,7 @@ class _MultiCallMethod:
class MultiCallIterator: class MultiCallIterator:
"""Iterates over the results of a multicall. Exceptions are """Iterates over the results of a multicall. Exceptions are
thrown in response to xmlrpc faults.""" raised in response to xmlrpc faults."""
def __init__(self, results): def __init__(self, results):
self.results = results self.results = results
......
...@@ -59,7 +59,7 @@ PyDoc_STRVAR(module_doc, ...@@ -59,7 +59,7 @@ PyDoc_STRVAR(module_doc,
"At the top of the I/O hierarchy is the abstract base class IOBase. It\n" "At the top of the I/O hierarchy is the abstract base class IOBase. It\n"
"defines the basic interface to a stream. Note, however, that there is no\n" "defines the basic interface to a stream. Note, however, that there is no\n"
"separation between reading and writing to streams; implementations are\n" "separation between reading and writing to streams; implementations are\n"
"allowed to throw an IOError if they do not support a given operation.\n" "allowed to raise an IOError if they do not support a given operation.\n"
"\n" "\n"
"Extending IOBase is RawIOBase which deals simply with the reading and\n" "Extending IOBase is RawIOBase which deals simply with the reading and\n"
"writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide\n" "writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide\n"
......
...@@ -698,7 +698,7 @@ parser_tuple2st(PyST_Object *self, PyObject *args, PyObject *kw) ...@@ -698,7 +698,7 @@ parser_tuple2st(PyST_Object *self, PyObject *args, PyObject *kw)
err_string("parse tree does not use a valid start symbol"); err_string("parse tree does not use a valid start symbol");
} }
} }
/* Make sure we throw an exception on all errors. We should never /* Make sure we raise an exception on all errors. We should never
* get this, but we'd do well to be sure something is done. * get this, but we'd do well to be sure something is done.
*/ */
if (st == NULL && !PyErr_Occurred()) if (st == NULL && !PyErr_Occurred())
...@@ -813,7 +813,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num) ...@@ -813,7 +813,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
else if (!ISNONTERMINAL(type)) { else if (!ISNONTERMINAL(type)) {
/* /*
* It has to be one or the other; this is an error. * It has to be one or the other; this is an error.
* Throw an exception. * Raise an exception.
*/ */
PyObject *err = Py_BuildValue("os", elem, "unknown node type."); PyObject *err = Py_BuildValue("os", elem, "unknown node type.");
PyErr_SetObject(parser_error, err); PyErr_SetObject(parser_error, err);
...@@ -863,7 +863,7 @@ build_node_tree(PyObject *tuple) ...@@ -863,7 +863,7 @@ build_node_tree(PyObject *tuple)
if (ISTERMINAL(num)) { if (ISTERMINAL(num)) {
/* /*
* The tuple is simple, but it doesn't start with a start symbol. * The tuple is simple, but it doesn't start with a start symbol.
* Throw an exception now and be done with it. * Raise an exception now and be done with it.
*/ */
tuple = Py_BuildValue("os", tuple, tuple = Py_BuildValue("os", tuple,
"Illegal syntax-tree; cannot start with terminal symbol."); "Illegal syntax-tree; cannot start with terminal symbol.");
......
...@@ -349,7 +349,7 @@ extern int lstat(const char *, struct stat *); ...@@ -349,7 +349,7 @@ extern int lstat(const char *, struct stat *);
#if defined _MSC_VER && _MSC_VER >= 1400 #if defined _MSC_VER && _MSC_VER >= 1400
/* Microsoft CRT in VS2005 and higher will verify that a filehandle is /* Microsoft CRT in VS2005 and higher will verify that a filehandle is
* valid and throw an assertion if it isn't. * valid and raise an assertion if it isn't.
* Normally, an invalid fd is likely to be a C program error and therefore * Normally, an invalid fd is likely to be a C program error and therefore
* an assertion can be useful, but it does contradict the POSIX standard * an assertion can be useful, but it does contradict the POSIX standard
* which for write(2) states: * which for write(2) states:
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
''' '''
Small wsgiref based web server. Takes a path to serve from and an Small wsgiref based web server. Takes a path to serve from and an
optional port number (defaults to 8000), then tries to serve files. optional port number (defaults to 8000), then tries to serve files.
Mime types are guessed from the file names, 404 errors are thrown Mime types are guessed from the file names, 404 errors are raised
if the file is not found. Used for the make serve target in Doc. if the file is not found. Used for the make serve target in Doc.
''' '''
import sys import sys
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment