mirror of
https://github.com/python/cpython.git
synced 2024-11-27 11:55:13 +08:00
Issue #16714: use 'raise' exceptions, don't 'throw'.
Patch by Serhiy Storchaka.
This commit is contained in:
parent
80ab6c53c6
commit
4bb142b1b7
@ -253,7 +253,7 @@ behave slightly differently from real Capsules. Specifically:
|
||||
|
||||
* :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
|
||||
in a CObject, noisy failure of :c:func:`PyCapsule_SetName`
|
||||
was deemed preferable to silent failure here. If this is
|
||||
|
@ -393,7 +393,7 @@ class dispatcher:
|
||||
else:
|
||||
return data
|
||||
except socket.error, why:
|
||||
# winsock sometimes throws ENOTCONN
|
||||
# winsock sometimes raises ENOTCONN
|
||||
if why.args[0] in _DISCONNECTED:
|
||||
self.handle_close()
|
||||
return ''
|
||||
|
@ -104,7 +104,7 @@ class msvc9compilerTestCase(support.TempdirManager,
|
||||
unittest.TestCase):
|
||||
|
||||
def test_no_compiler(self):
|
||||
# makes sure query_vcvarsall throws
|
||||
# makes sure query_vcvarsall raises
|
||||
# a DistutilsPlatformError if the compiler
|
||||
# is not found
|
||||
from distutils.msvc9compiler import query_vcvarsall
|
||||
|
@ -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().
|
||||
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
|
||||
the current message. Defects are just instances that live on the message
|
||||
object's .defects attribute.
|
||||
@ -214,7 +214,7 @@ class FeedParser:
|
||||
# supposed to see in the body of the message.
|
||||
self._parse_headers(headers)
|
||||
# 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.
|
||||
if self._headersonly:
|
||||
lines = []
|
||||
|
@ -103,7 +103,7 @@ def decode_header(header):
|
||||
dec = email.base64mime.decode(encoded)
|
||||
except binascii.Error:
|
||||
# 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.
|
||||
raise HeaderParseError
|
||||
if dec is None:
|
||||
|
@ -1068,7 +1068,7 @@ class HTTP:
|
||||
if port == 0:
|
||||
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
|
||||
# will call connect before then, with a proper host.
|
||||
self._setup(self._connection_class(host, port, strict))
|
||||
|
@ -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
|
||||
defines the basic interface to a stream. Note, however, that there is no
|
||||
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
|
||||
writing of raw bytes to a stream. FileIO subclasses RawIOBase to provide
|
||||
|
@ -155,7 +155,7 @@ def _tkerror(err):
|
||||
pass
|
||||
|
||||
def _exit(code=0):
|
||||
"""Internal function. Calling it will throw the exception SystemExit."""
|
||||
"""Internal function. Calling it will raise the exception SystemExit."""
|
||||
try:
|
||||
code = int(code)
|
||||
except ValueError:
|
||||
|
@ -1251,7 +1251,7 @@ class Logger(Filterer):
|
||||
all the handlers of this logger to handle the record.
|
||||
"""
|
||||
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
|
||||
#IronPython can use logging.
|
||||
try:
|
||||
|
@ -200,7 +200,7 @@ def _get_importer(path_name):
|
||||
pass
|
||||
else:
|
||||
# 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
|
||||
# by the standard import machinery)
|
||||
try:
|
||||
|
@ -50,7 +50,7 @@ class CodeopTests(unittest.TestCase):
|
||||
'''succeed iff str is the start of an invalid piece of code'''
|
||||
try:
|
||||
compile_command(str,symbol=symbol)
|
||||
self.fail("No exception thrown for invalid code")
|
||||
self.fail("No exception raised for invalid code")
|
||||
except SyntaxError:
|
||||
self.assertTrue(is_syntax)
|
||||
except OverflowError:
|
||||
|
@ -100,7 +100,7 @@ class DocXMLRPCHTTPGETServer(unittest.TestCase):
|
||||
self.assertEqual(response.status, 200)
|
||||
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()
|
||||
|
||||
def test_invalid_get_response(self):
|
||||
|
@ -79,7 +79,7 @@ class SimpleIMAPHandler(SocketServer.StreamRequestHandler):
|
||||
return
|
||||
line += part
|
||||
except IOError:
|
||||
# ..but SSLSockets throw exceptions.
|
||||
# ..but SSLSockets raise exceptions.
|
||||
return
|
||||
if line.endswith('\r\n'):
|
||||
break
|
||||
|
@ -1060,7 +1060,7 @@ class MinidomTest(unittest.TestCase):
|
||||
'<?xml version="1.0" encoding="iso-8859-15"?><foo>\xa4</foo>',
|
||||
"testEncodings - encoding EURO SIGN")
|
||||
|
||||
# Verify that character decoding errors throw exceptions instead
|
||||
# Verify that character decoding errors raise exceptions instead
|
||||
# of crashing
|
||||
self.assertRaises(UnicodeDecodeError, parseString,
|
||||
'<fran\xe7ais>Comment \xe7a va ? Tr\xe8s bien ?</fran\xe7ais>')
|
||||
|
@ -214,33 +214,33 @@ class StatAttributeTests(unittest.TestCase):
|
||||
|
||||
try:
|
||||
result[200]
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
# Make sure that assignment fails
|
||||
try:
|
||||
result.st_mode = 1
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except (AttributeError, TypeError):
|
||||
pass
|
||||
|
||||
try:
|
||||
result.st_rdev = 1
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except (AttributeError, TypeError):
|
||||
pass
|
||||
|
||||
try:
|
||||
result.parrot = 1
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
# Use the stat_result constructor with a too-short tuple.
|
||||
try:
|
||||
result2 = os.stat_result((10,))
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
@ -274,20 +274,20 @@ class StatAttributeTests(unittest.TestCase):
|
||||
# Make sure that assignment really fails
|
||||
try:
|
||||
result.f_bfree = 1
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
try:
|
||||
result.parrot = 1
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
# Use the constructor with a too-short tuple.
|
||||
try:
|
||||
result2 = os.statvfs_result((10,))
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
|
@ -152,7 +152,7 @@ class PtyTest(unittest.TestCase):
|
||||
# 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
|
||||
# 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
|
||||
# already exited, so catch and discard those exceptions. It's not
|
||||
# worth checking for EIO.
|
||||
|
@ -294,7 +294,7 @@ class XmlgenTest(unittest.TestCase):
|
||||
def test_5027_1(self):
|
||||
# The xml prefix (as in xml:lang below) is reserved and bound by
|
||||
# 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.
|
||||
#
|
||||
# This test demonstrates the bug by parsing a document.
|
||||
@ -320,7 +320,7 @@ class XmlgenTest(unittest.TestCase):
|
||||
def test_5027_2(self):
|
||||
# The xml prefix (as in xml:lang below) is reserved and bound by
|
||||
# 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.
|
||||
#
|
||||
# This test demonstrates the bug by direct manipulation of the
|
||||
|
@ -109,7 +109,7 @@ class InterProcessSignalTests(unittest.TestCase):
|
||||
# This wait should be interrupted by the signal's exception.
|
||||
self.wait(child)
|
||||
time.sleep(1) # Give the signal time to be delivered.
|
||||
self.fail('HandlerBCalled exception not thrown')
|
||||
self.fail('HandlerBCalled exception not raised')
|
||||
except HandlerBCalled:
|
||||
self.assertTrue(self.b_called)
|
||||
self.assertFalse(self.a_called)
|
||||
@ -148,7 +148,7 @@ class InterProcessSignalTests(unittest.TestCase):
|
||||
# test-running process from all the signals. It then
|
||||
# communicates with that child process over a pipe and
|
||||
# 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()
|
||||
with closing(os.fdopen(os_done_r)) as done_r, \
|
||||
closing(os.fdopen(os_done_w, 'w')) as done_w:
|
||||
|
@ -58,7 +58,7 @@ if HAVE_UNIX_SOCKETS:
|
||||
def simple_subprocess(testcase):
|
||||
pid = os.fork()
|
||||
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)
|
||||
yield None
|
||||
pid2, status = os.waitpid(pid, 0)
|
||||
|
@ -417,7 +417,7 @@ class RaisingTraceFuncTestCase(unittest.TestCase):
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
self.fail("exception not thrown!")
|
||||
self.fail("exception not raised!")
|
||||
except RuntimeError:
|
||||
self.fail("recursion counter not reset")
|
||||
|
||||
|
@ -106,7 +106,7 @@ class TimeTestCase(unittest.TestCase):
|
||||
|
||||
def test_strptime(self):
|
||||
# Should be able to go round-trip from strftime to strptime without
|
||||
# throwing an exception.
|
||||
# raising an exception.
|
||||
tt = time.gmtime(self.t)
|
||||
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
|
||||
'j', 'm', 'M', 'p', 'S',
|
||||
|
@ -48,7 +48,7 @@ class UUTest(unittest.TestCase):
|
||||
out = cStringIO.StringIO()
|
||||
try:
|
||||
uu.decode(inp, out)
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except uu.Error, e:
|
||||
self.assertEqual(str(e), "Truncated input file")
|
||||
|
||||
@ -57,7 +57,7 @@ class UUTest(unittest.TestCase):
|
||||
out = cStringIO.StringIO()
|
||||
try:
|
||||
uu.decode(inp, out)
|
||||
self.fail("No exception thrown")
|
||||
self.fail("No exception raised")
|
||||
except uu.Error, e:
|
||||
self.assertEqual(str(e), "No valid begin line found in input file")
|
||||
|
||||
|
@ -234,7 +234,7 @@ class LocalWinregTests(BaseWinregTests):
|
||||
|
||||
def test_changing_value(self):
|
||||
# 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"
|
||||
done = False
|
||||
|
||||
@ -282,7 +282,7 @@ class LocalWinregTests(BaseWinregTests):
|
||||
|
||||
def test_dynamic_key(self):
|
||||
# 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:
|
||||
EnumValue(HKEY_PERFORMANCE_DATA, 0)
|
||||
except OSError as e:
|
||||
|
@ -811,7 +811,7 @@ class OtherTests(unittest.TestCase):
|
||||
with zipfile.ZipFile(data, mode="w") as zipf:
|
||||
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
|
||||
# version of .testzip would swallow this exception (and any other)
|
||||
# and report that the first file in the archive was corrupt.
|
||||
|
@ -166,7 +166,7 @@ def format_exception_only(etype, value):
|
||||
# >>> raise string1, string2 # deprecated
|
||||
#
|
||||
# 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
|
||||
isinstance(etype, types.InstanceType) or
|
||||
etype is None or type(etype) is str):
|
||||
|
@ -447,10 +447,10 @@ class TestCase(object):
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
unexpected exception.
|
||||
|
||||
|
@ -134,9 +134,9 @@ def validator(application):
|
||||
When applied between a WSGI server and a WSGI application, this
|
||||
middleware will check for WSGI compliancy on a number of levels.
|
||||
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
|
||||
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).
|
||||
"""
|
||||
|
||||
|
@ -12,7 +12,7 @@ class SAXException(Exception):
|
||||
the application: you can subclass it to provide additional
|
||||
functionality, or to add localization. Note that although you will
|
||||
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
|
||||
it."""
|
||||
|
||||
@ -50,7 +50,7 @@ class SAXParseException(SAXException):
|
||||
the original XML document. Note that although the application will
|
||||
receive a SAXParseException as the argument to the handlers in the
|
||||
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.
|
||||
|
||||
Since this exception is a subclass of SAXException, it inherits
|
||||
@ -62,7 +62,7 @@ class SAXParseException(SAXException):
|
||||
self._locator = locator
|
||||
|
||||
# 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
|
||||
# it gets caught.
|
||||
self._systemId = self._locator.getSystemId()
|
||||
|
@ -68,7 +68,7 @@ class XMLReader:
|
||||
|
||||
SAX parsers are not required to provide localization for errors
|
||||
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."""
|
||||
raise SAXNotSupportedException("Locale support not implemented")
|
||||
|
||||
|
@ -945,7 +945,7 @@ class _MultiCallMethod:
|
||||
|
||||
class MultiCallIterator:
|
||||
"""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):
|
||||
self.results = results
|
||||
|
@ -59,7 +59,7 @@ PyDoc_STRVAR(module_doc,
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
|
@ -698,7 +698,7 @@ parser_tuple2st(PyST_Object *self, PyObject *args, PyObject *kw)
|
||||
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.
|
||||
*/
|
||||
if (st == NULL && !PyErr_Occurred())
|
||||
@ -813,7 +813,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
|
||||
else if (!ISNONTERMINAL(type)) {
|
||||
/*
|
||||
* 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.");
|
||||
PyErr_SetObject(parser_error, err);
|
||||
@ -863,7 +863,7 @@ build_node_tree(PyObject *tuple)
|
||||
if (ISTERMINAL(num)) {
|
||||
/*
|
||||
* 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,
|
||||
"Illegal syntax-tree; cannot start with terminal symbol.");
|
||||
|
@ -349,7 +349,7 @@ extern int lstat(const char *, struct stat *);
|
||||
|
||||
#if defined _MSC_VER && _MSC_VER >= 1400
|
||||
/* 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
|
||||
* an assertion can be useful, but it does contradict the POSIX standard
|
||||
* which for write(2) states:
|
||||
|
@ -2,7 +2,7 @@
|
||||
'''
|
||||
Small wsgiref based web server. Takes a path to serve from and an
|
||||
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.
|
||||
'''
|
||||
import sys
|
||||
|
Loading…
Reference in New Issue
Block a user