Mage <ma**@mage.hu> 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()