Python Language Exceptions: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 53: Line 53:
       ├─ LookupError
       ├─ LookupError
       │    ├─ IndexError
       │    ├─ IndexError
       │    +-- KeyError
       │    └─ KeyError
       ├─ MemoryError
       ├─ MemoryError
       ├─ NameError
       ├─ NameError
       │    +-- UnboundLocalError
       │    └─ UnboundLocalError
       ├─ OSError
       ├─ OSError
       │    ├─ BlockingIOError
       │    ├─ BlockingIOError
Line 64: Line 64:
       │    │    ├─ ConnectionAbortedError
       │    │    ├─ ConnectionAbortedError
       │    │    ├─ ConnectionRefusedError
       │    │    ├─ ConnectionRefusedError
       │    │    ├─ ConnectionResetError
       │    │    └─ ConnectionResetError
       │    ├─ FileExistsError
       │    ├─ FileExistsError
       │    ├─ FileNotFoundError
       │    ├─ FileNotFoundError
Line 76: Line 76:
       ├─ RuntimeError
       ├─ RuntimeError
       │    ├─ NotImplementedError
       │    ├─ NotImplementedError
       │    +-- RecursionError
       │    └─ RecursionError
       ├─ SyntaxError
       ├─ SyntaxError
       │    +-- IndentationError
       │    └─ IndentationError
       │        +-- TabError
       │        └─ TabError
       ├─ SystemError
       ├─ SystemError
       ├─ TypeError
       ├─ TypeError
       ├─ ValueError
       ├─ ValueError
       │    +-- UnicodeError
       │    └─ UnicodeError
       │        ├─ UnicodeDecodeError
       │        ├─ UnicodeDecodeError
       │        ├─ UnicodeEncodeError
       │        ├─ UnicodeEncodeError
       │        +-- UnicodeTranslateError
       │        └─ UnicodeTranslateError
       +-- Warning
       +-- Warning
           ├─ DeprecationWarning
           ├─ DeprecationWarning
Line 98: Line 98:
           ├─ BytesWarning
           ├─ BytesWarning
           ├─ EncodingWarning
           ├─ EncodingWarning
           +-- ResourceWarning
           └─ ResourceWarning
</font>
</font>

Revision as of 21:24, 16 February 2022

Internal

Overview

try/except is a language-level mechanism to handle errors (traceback) that may be caused by a section of the code.

To trigger an exception manually in the code use raise.

To conditionally trigger an exception in the code, use assert.

try/except

try/except is a language-level mechanism to handle errors (traceback) that may be caused by a section of the code. This syntax eliminates tracebacks.

try:
  # do something
except:
  # execute if the previous block caused an error

finally

raise

raise must be followed by an exception, not a string.

assert

The assert statement can be used to trigger an AssertionError conditionally. It can be use with an optional error message, which is becoming part of the exception if the assertion proves false:

assert s is not None
assert s is not None, 'The string was supposed to be set!'

Predefined Exceptions

https://docs.python.org/3/library/exceptions.html

BaseException
 ├─ SystemExit
 ├─ KeyboardInterrupt
 ├─ GeneratorExit
 └─ Exception
     ├─ StopIteration
     ├─ StopAsyncIteration
     ├─ ArithmeticError
     │   ├─ FloatingPointError
     │   ├─ OverflowError
     │   └─ ZeroDivisionError
     ├─ AssertionError
     ├─ AttributeError
     ├─ BufferError
     ├─ EOFError
     ├─ ImportError
     │   └─ ModuleNotFoundError
     ├─ LookupError
     │    ├─ IndexError
     │    └─ KeyError
     ├─ MemoryError
     ├─ NameError
     │    └─ UnboundLocalError
     ├─ OSError
     │    ├─ BlockingIOError
     │    ├─ ChildProcessError
     │    ├─ ConnectionError
     │    │    ├─ BrokenPipeError
     │    │    ├─ ConnectionAbortedError
     │    │    ├─ ConnectionRefusedError
     │    │    └─ ConnectionResetError
     │    ├─ FileExistsError
     │    ├─ FileNotFoundError
     │    ├─ InterruptedError
     │    ├─ IsADirectoryError
     │    ├─ NotADirectoryError
     │    ├─ PermissionError
     │    ├─ ProcessLookupError
     │    ├─ TimeoutError
     ├─ ReferenceError
     ├─ RuntimeError
     │    ├─ NotImplementedError
     │    └─ RecursionError
     ├─ SyntaxError
     │    └─ IndentationError
     │         └─ TabError
     ├─ SystemError
     ├─ TypeError
     ├─ ValueError
     │    └─ UnicodeError
     │         ├─ UnicodeDecodeError
     │         ├─ UnicodeEncodeError
     │         └─ UnicodeTranslateError
     +-- Warning
          ├─ DeprecationWarning
          ├─ PendingDeprecationWarning
          ├─ RuntimeWarning
          ├─ SyntaxWarning
          ├─ UserWarning
          ├─ FutureWarning
          ├─ ImportWarning
          ├─ UnicodeWarning
          ├─ BytesWarning
          ├─ EncodingWarning
          └─ ResourceWarning