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.