I have the following try block:
try:
   # depending on conditions, this can generate several types of errors
   mymodule.do_stuff()
except Exception as e:
   print("something went wrong, the error was :" + type(e).__name__)
I would like to catch potential errors from do_stuff(). After trial and error I was able to generate a list of potential errors that can be triggered by do_stuff() by printing their type(e).__name__ value:
DoStuffInsufficientMemoryException
DoStuffInsufficientCPUException
DoStuffInsufficientDiskException
but if I try do modify my except statement from except Exception as e to except DoStuffInsufficientMemoryException, I will get the error that DoStuffInsufficientMemoryException is not defined.
I tried defining a class that extends Exception for it, as most tutorials / questions in here suggest, basically:
class WAFInvalidParameterException(Exception):
    pass
so now that variable is recognized, but since I can't control the error that do_sutff() will raise, I can't really raise this exception in my initial try block.
Ideally I would like to have 1 except block for each error so I would like to have something like:
try:
   mymodule.do_stuff()
except DoStuffInsufficientMemoryException:
    free_memory()
except DoStuffInsufficientCPUException:
    kill_processes()
except DoStuffInsufficientDiskException:
    free_disk_space()
but of course this doesn't work as these variables are not defined.
 
     
     
    