Exceptions and modules
sam
westernsam at hotmail.com
Fri Jul 4 10:27:28 EDT 2003
Hello,
consider the following code:
<module1>
import sys
import threading
class MyException(Exception):
pass
#from module1 import MyException
class runner(threading.Thread):
def __init__(self, callableObj):
self.callableObject=callableObj
threading.Thread.__init__(self)
def run(self):
try:
self.callableObject.makeCall()
except MyException, err:
print "MyException"
print sys.exc_type, err
except Exception, err:
print "Exception"
print sys.exc_type, err
if __name__ == '__main__':
if len(sys.argv) != 3:
print "Usage <module> <class>"
else:
callableObj = getattr(__import__(sys.argv[1]), sys.argv[2])()
thread=runner(callableObj)
thread.start()
</module1>
<module2>
from module1 import MyException
class Callable:
def makeCall(self):
raise MyException("MyException")
</module2>
Now I start the process:
python module1.py module2 Callable
And the result is:
Exception
module1.MyException MyException
So the Exception isn't recognised even though it has the same
namespace and name as the exception defined in the module. I have to
uncomment the 7th line to get my example to behave as I would like it
to.
Is this a bug/feature? Is there any reason why it shouldn't work the
way I expect it to?
Regards,
Sam Owen
More information about the Python-list
mailing list