On 2/15/2012 8:12 AM, Andrea Crotti wrote:
I have the following very simplified situation

from atexit import register

def goodbye(): print("saying goodbye")

def main():
>   while True: var = raw_input("read something")

if __name__ == '__main__':
>   register(goodbye)
>   main()

But in my case the "goodbye" function is deleting the logging file
which was created during the application execution. Now the problem
is that it *always* executes, even when the applications quits for
some bad errors.

Is there a way to have an exit hook, which doesn't execute in case of
errors?

Have a single no-error normal exit point.

if __name__ == '__main__':
   main()
   cleanup()

if you really want to exit by exceptions rather than by returns,

if __name__ == '__main__':
   try: main()
   except SystemExit: normal_exit_cleanup()

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to