Home | Trees | Index | Help |
|
---|
Package aquarium :: Package util :: Module TryFinally |
|
This is a convenient way to deeply nest try/finally statements.
Function Summary | |
---|---|
Get the index of a task based on its enter or exit function. | |
Given a task, return it after filling in all the blanks in the tuples. | |
This is a convenient way to deeply nest try/finally statements. |
Function Details |
---|
getIndexOfTask(tasks, f_enter=None, f_exit=None)Get the index of a task based on its enter or exit function. Once you have the index of the task, you can update the tasks list by putting another task before or after that index. This is useful for subclasses updating a list created by a superclass. Raise IndexError if the index cannot be found.
|
normalizeTask(task)Given a task, return it after filling in all the blanks in the tuples. That is, return: ((f_enter, f_enter_args, f_enter_kargs), (f_exit, f_exit_args, f_exit_kargs)) |
tryFinally(tasks, handleFinallyException=None)This is a convenient way to deeply nest try/finally statements. It is appropriate for complicated resource initialization and destruction. For instance, if you have a list of 50 things that need to get intialized and later destructed via using try/finally (especially if you need to create the list dynamically) this function is appropriate. Given: tasks = [ ((f_enter_0, enter_0_args, enter_0_kargs), (f_exit_0, exit_0_args, exit_0_kargs)), ((f_enter_1, enter_1_args, enter_1_kargs), (f_exit_1, exit_1_args, exit_1_kargs)), ((f_enter_2, enter_2_args, enter_2_kargs), (f_exit_2, exit_2_args, exit_2_kargs)) ] Execute: f_enter_0(*enter_0_args, **enter_0_kargs) try: f_enter_1(*enter_1_args, **enter_1_kargs) try: f_enter_2(*enter_2_args, **enter_2_kargs) try: pass finally: try: f_exit_2(*exit_2_args, **exit_2_kargs) except Exception, e: handleFinallyException(e) finally: try: f_exit_1(*exit_1_args, **exit_1_kargs) except Exception, e: handleFinallyException(e) finally: try: f_exit_0(*exit_0_args, **exit_0_kargs) except Exception, e: handleFinallyException(e)
|
Home | Trees | Index | Help |
|
---|
Generated by Epydoc 2.1 on Mon Jan 1 16:34:19 2007 | http://epydoc.sf.net |