forked from trekhleb/learn-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_raise_exceptions.py
49 lines (36 loc) · 1.72 KB
/
test_raise_exceptions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""Raising Exceptions.
@see: https://docs.python.org/3/tutorial/errors.html#raising-exceptions
The raise statement allows the programmer to force a specified exception to occur.
"""
def test_raise_exception():
"""Raising Exceptions.
The raise statement allows the programmer to force a specified exception to occur.
"""
exception_is_caught = False
try:
# The sole argument to raise indicates the exception to be raised. This must be either an
# exception instance or an exception class (a class that derives from Exception). If an
# exception class is passed, it will be implicitly instantiated by calling its constructor
# with no arguments
raise NameError('HiThere') # shorthand for 'raise ValueError()'
except NameError:
exception_is_caught = True
assert exception_is_caught
def test_user_defined_exception():
"""User-defined Exceptions"""
# Programs may name their own exceptions by creating a new exception class. Exceptions should
# typically be derived from the Exception class, either directly or indirectly.
# Most exceptions are defined with names that end in “Error,” similar to the naming of the
# standard exceptions. Many standard modules define their own exceptions to report errors
# that may occur in functions they define.
class MyCustomError(Exception):
"""Example of MyCustomError exception."""
def __init__(self, message):
super().__init__(message)
self.message = message
custom_exception_is_caught = False
try:
raise MyCustomError('My custom message')
except MyCustomError:
custom_exception_is_caught = True
assert custom_exception_is_caught