Mage <[EMAIL PROTECTED]> wrote: > Hello, > > > def error_msg(msg): > sys.exit(msg) > > try: > do_something() > if value != my_wish: > error_msg('Invalid input') > except: > print "Fatal IO or Network error" > > This doesn't work because sys.exit raises an exception.
Peter Otten posted a good way to do what you want, but I'm not convinced that it's a good idea. You're assuming that any exception you get will be a "Fatal IO or Network error". What if it's not? What if do_something() raises FutureWarning, or KeyboardInterrupt, or AssertionError, or DeprecationWarning, or anything else which has nothing to do with IO or networks? You would just end up producing a misleading error message. If you expect do_something() will throw certain exceptions, catch them specifically. It's usually a mistake to catch everything. It's certainly a mistake to catch everything and assume you know what it must be. Try running the following code and see what happens: import traceback def do_something(): pass try: do_something() if value != my_wish: error_msg('Invalid input') except: print "Fatal IO or Network error" print traceback.print_exc() -- http://mail.python.org/mailman/listinfo/python-list