Examples
This page contains the raw code + output of our examples. For detailed explanations of what is going on please see the Quick Start guide.
Example 0
Code Listing: Example 0
1#!/usr/bin/env python3
2from exceptioncontrol import ExceptionControl
3
4
5
6class MyClass(ExceptionControl):
7
8 def some_method(self):
9 # do some work
10 self.exception_control_event("WARNING", TypeError, "An error occurred")
11 return
12
13
14
15# create an instance of the class
16data = MyClass()
17
18# call the method that contains an exception_control_event.
19data.some_method()
Output: Example 0
!! ================================================================================
!! EXCEPTION SKIPPED
!! Event Type : WARNING
!! Exception : TypeError
!! Message : An error occurred
!!
!! Call Stack:
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-00.py", line 19, in <module>
!! data.some_method()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-00.py", line 10, in some_method
!! self.exception_control_event("WARNING", TypeError, "An error occurred")
!!
!! Increase `exception_control_level` to 5 to raise this exception.
!! ================================================================================
Example 1
Code Listing: Example 1
1#!/usr/bin/env python3
2"""
3Example for ExceptionControl
4"""
5from exceptioncontrol import ExceptionControl
6
7
8
9class MyClass(ExceptionControl):
10
11 def method_with_silent_event(self):
12 # do stuff
13 print("Trigger a `SILENT` event:")
14 self.exception_control_event("SILENT", TypeError, "Something happened!")
15 return
16
17 def method_with_warning_event(self):
18 # do stuff
19 print("Trigger a `WARNING` event:")
20 self.exception_control_event("WARNING", TypeError, "A TypeError occurred!")
21 return
22
23 def method_with_minor_event(self):
24 # do stuff
25 print("Trigger a `MINOR` event:")
26 self.exception_control_event("MINOR", ValueError, "Something minor happened!")
27 return
28
29 def method_with_serious_event(self):
30 # do stuff
31 print("Trigger a `SERIOUS` event:")
32 self.exception_control_event("SERIOUS", ValueError, "Something serious happened!")
33 return
34
35 def method_with_critical_event(self):
36 # do stuff
37 print("Trigger a `CRITICAL` event:")
38 self.exception_control_event("CRITICAL", Exception, "A critical error occurred!")
39 return
40
41 def method_with_catastrophic_event(self):
42 # do stuff
43 print("Trigger a `CATASTROPHIC` event:")
44 self.exception_control_event("CATASTROPHIC", Exception, "Catastrophe!")
45 return
46
47
48
49def main():
50
51 # Create an instance of our test class
52 data = MyClass()
53
54 # A SILENT event should show no messages.
55 data.method_with_silent_event()
56 print("")
57
58 # A WARNING event prints a message but does not interrupt execution
59 data.method_with_warning_event()
60 print("")
61
62 # A MINOR event raises an exception if exception_control_level
63 # is 4 (default) or higher.
64 try:
65 data.method_with_minor_event()
66 except ValueError as err:
67 print("*** CAUGHT EXCEPTION ***")
68 print(">>> `MINOR` event triggered a ValueError exception")
69 print(f">>> message: {err}")
70 print("")
71
72 # Change exception_control_level to 3 will cause MINOR events to
73 # print a warning message without raising the exception.
74 print("Set exception_control_level = 3")
75 data.exception_control_level = 3
76 data.method_with_minor_event()
77 print("")
78
79 # A SERIOUS event raises an exception when exception_control_level
80 # is 3 or higher.
81 try:
82 data.method_with_serious_event()
83 except ValueError as err:
84 print("*** CAUGHT EXCEPTION ***")
85 print(">>> `SERIOUS` event triggered a ValueError exception")
86 print(f">>> message: {err}")
87 print("")
88
89 # Changing exception_control_level to 2 will suppress a SERIOUS
90 # event from being raised in favour of printing a warning message.
91 print("Set exception_control_level = 2")
92 data.exception_control_level = 2
93 data.method_with_serious_event()
94 print("")
95
96 # A CRITICAL event raises an exception when exception_control_level
97 # is 2 or higher.
98 try:
99 data.method_with_critical_event()
100 except Exception as err:
101 print("*** CAUGHT EXCEPTION ***")
102 print(">>> `CRITICAL` event triggered an Exception")
103 print(f">>> message: {err}")
104 print("")
105
106 # Changing exception_control_level to 1 will suppress a CRITICAL
107 # event from being raised in favour of printing a warning message.
108 print("Set exception_control_level = 1")
109 data.exception_control_level = 1
110 data.method_with_critical_event()
111 print("")
112
113 # Set exception_control_level to 0 to suppress all exceptions
114 # and warning messages.
115 print("Set exception_control_level = 0")
116 data.exception_control_level = 0
117
118 data.method_with_silent_event()
119 data.method_with_warning_event()
120 data.method_with_minor_event()
121 data.method_with_serious_event()
122 data.method_with_critical_event()
123
124 # CATASTROPHIC events will *always* raise the exception regardless
125 # of exception_control_level.
126 try:
127 data.method_with_catastrophic_event()
128 except Exception as err:
129 print("*** CAUGHT EXCEPTION ***")
130 print(">>> `CATASTROPHIC` event triggered an Exception")
131 print(f">>> message: {err}")
132 print("")
133
134
135
136if __name__ == "__main__":
137 main()
138 print("Done.")
Output: Example 1
Trigger a `SILENT` event:
Trigger a `WARNING` event:
!! ================================================================================
!! EXCEPTION SKIPPED
!! Event Type : WARNING
!! Exception : TypeError
!! Message : A TypeError occurred!
!!
!! Call Stack:
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 137, in <module>
!! main()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 59, in main
!! data.method_with_warning_event()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 20, in method_with_warning_event
!! self.exception_control_event("WARNING", TypeError, "A TypeError occurred!")
!!
!! Increase `exception_control_level` to 5 to raise this exception.
!! ================================================================================
Trigger a `MINOR` event:
*** CAUGHT EXCEPTION ***
>>> `MINOR` event triggered a ValueError exception
>>> message: Something minor happened!
Set exception_control_level = 3
Trigger a `MINOR` event:
!! ================================================================================
!! EXCEPTION SKIPPED
!! Event Type : MINOR
!! Exception : ValueError
!! Message : Something minor happened!
!!
!! Call Stack:
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 137, in <module>
!! main()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 76, in main
!! data.method_with_minor_event()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 26, in method_with_minor_event
!! self.exception_control_event("MINOR", ValueError, "Something minor happened!")
!!
!! Increase `exception_control_level` to 4 to raise this exception.
!! ================================================================================
Trigger a `SERIOUS` event:
*** CAUGHT EXCEPTION ***
>>> `SERIOUS` event triggered a ValueError exception
>>> message: Something serious happened!
Set exception_control_level = 2
Trigger a `SERIOUS` event:
!! ================================================================================
!! EXCEPTION SKIPPED
!! Event Type : SERIOUS
!! Exception : ValueError
!! Message : Something serious happened!
!!
!! Call Stack:
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 137, in <module>
!! main()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 93, in main
!! data.method_with_serious_event()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 32, in method_with_serious_event
!! self.exception_control_event("SERIOUS", ValueError, "Something serious happened!")
!!
!! Increase `exception_control_level` to 3 to raise this exception.
!! ================================================================================
Trigger a `CRITICAL` event:
*** CAUGHT EXCEPTION ***
>>> `CRITICAL` event triggered an Exception
>>> message: A critical error occurred!
Set exception_control_level = 1
Trigger a `CRITICAL` event:
!! ================================================================================
!! EXCEPTION SKIPPED
!! Event Type : CRITICAL
!! Exception : Exception
!! Message : A critical error occurred!
!!
!! Call Stack:
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 137, in <module>
!! main()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 110, in main
!! data.method_with_critical_event()
!! File "/builds/semantik-software/code/python/ExceptionControl/examples/ExceptionControl-Example-01.py", line 38, in method_with_critical_event
!! self.exception_control_event("CRITICAL", Exception, "A critical error occurred!")
!!
!! Increase `exception_control_level` to 2 to raise this exception.
!! ================================================================================
Set exception_control_level = 0
Trigger a `SILENT` event:
Trigger a `WARNING` event:
Trigger a `MINOR` event:
Trigger a `SERIOUS` event:
Trigger a `CRITICAL` event:
Trigger a `CATASTROPHIC` event:
*** CAUGHT EXCEPTION ***
>>> `CATASTROPHIC` event triggered an Exception
>>> message: Catastrophe!
Done.