python exception
try:
# Dangerous stuff
except ValueError:
# If you use try, at least 1 except block is mandatory!
# Handle it somehow / ignore
except (BadThingError, HorrbileThingError) as e:
# Hande it differently
except:
# This will catch every exception.
else:
# Else block is not mandatory.
# Dangerous stuff ended with no exception
finally:
# Finally block is not mandatory.
# This will ALWAYS happen after the above blocks.
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
] ResourceWarning
>>> def divide(x, y):
... try:
... result = x / y
... except ZeroDivisionError:
... print("division by zero!")
... else:
... print("result is", result)
... finally:
... print("executing finally clause")
...
>>> divide(2, 1)
result is 2.0
executing finally clause
>>> divide(2, 0)
division by zero!
executing finally clause
>>> divide("2", "1")
executing finally clause
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in divide
TypeError: unsupported operand type(s) for /: 'str' and 'str'