I’m writing a custom logging system for a project. If a function throws an exception, I want to log its local variables. Is it possible to access the raising function’s local variables from the except block that caught the exception? For example:
def myfunction():
v1 = get_a_value()
raise Exception()
try:
myfunction()
except:
# can I access v1 from here?
It’s generally cleaner design to pass the value to the exception, if you know that your exception handling code is going to need it. However, if you’re writing a debugger or something like that, where you will need to access variables without knowing which ones they are in advance, you can access an arbitrary variable in the context where the exception was thrown:
The functionality of the
tracefunction, and the format of thetracebackobjects it deals with, are described in theinspectmodule documentation.