diff options
Diffstat (limited to 'Lib/dos-8x3/exceptio.py')
-rw-r--r-- | Lib/dos-8x3/exceptio.py | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/Lib/dos-8x3/exceptio.py b/Lib/dos-8x3/exceptio.py new file mode 100644 index 0000000..c7bbbf4 --- /dev/null +++ b/Lib/dos-8x3/exceptio.py @@ -0,0 +1,155 @@ +"""Class based built-in exception hierarchy. + +This is a new feature whereby all the standard built-in exceptions, +traditionally string objects, are replaced with classes. This gives +Python's exception handling mechanism a more object-oriented feel. + +Most existing code should continue to work with class based +exceptions. Some tricky uses of IOError may break, but the most +common uses should work. + +To disable this feature, start the Python executable with the -X option. + +Here is a rundown of the class hierarchy. You can change this by +editing this file, but it isn't recommended. The classes with a `*' +are new with this feature. They are defined as tuples containing the +derived exceptions when string-based exceptions are used. + +Exception(*) + | + +-- StandardError(*) + | + +-- SystemExit + +-- KeyboardInterrupt + +-- ImportError + +-- IOError + +-- EOFError + +-- RuntimeError + +-- NameError + +-- AttributeError + +-- SyntaxError + +-- TypeError + +-- AssertionError + +-- LookupError(*) + | | + | +-- IndexError + | +-- KeyError + | + +-- ArithmeticError(*) + | | + | +-- OverflowError + | +-- ZeroDivisionError + | +-- FloatingPointError + | + +-- ValueError + +-- SystemError + +-- MemoryError +""" + +class Exception: + def __init__(self, *args): + self.args = args + + def __str__(self): + if not self.args: + return '' + elif len(self.args) == 1: + return str(self.args[0]) + else: + return str(self.args) + + def __getitem__(self, i): + return self.args[i] + +class StandardError(Exception): + pass + +class SyntaxError(StandardError): + filename = lineno = offset = text = None + msg = "" + def __init__(self, *args): + self.args = args + if len(self.args) >= 1: + self.msg = self.args[0] + if len(self.args) == 2: + info = self.args[1] + try: + self.filename, self.lineno, self.offset, self.text = info + except: + pass + def __str__(self): + return str(self.msg) + +class IOError(StandardError): + def __init__(self, *args): + self.args = args + self.errno = None + self.strerror = None + if len(args) == 2: + # common case: PyErr_SetFromErrno() + self.errno = args[0] + self.strerror = args[1] + +class RuntimeError(StandardError): + pass + +class SystemError(StandardError): + pass + +class EOFError(StandardError): + pass + +class ImportError(StandardError): + pass + +class TypeError(StandardError): + pass + +class ValueError(StandardError): + pass + +class KeyboardInterrupt(StandardError): + pass + +class AssertionError(StandardError): + pass + +class ArithmeticError(StandardError): + pass + +class OverflowError(ArithmeticError): + pass + +class FloatingPointError(ArithmeticError): + pass + +class ZeroDivisionError(ArithmeticError): + pass + +class LookupError(StandardError): + pass + +class IndexError(LookupError): + pass + +class KeyError(LookupError): + pass + +class AttributeError(StandardError): + pass + +class NameError(StandardError): + pass + +class MemoryError(StandardError): + pass + +class SystemExit(Exception): + def __init__(self, *args): + self.args = args + if len(args) == 0: + self.code = None + elif len(args) == 1: + self.code = args[0] + else: + self.code = args |