If you have access to the source of the function you want to call (and know
what kind of data types it wants in its args) you can raise something else for
bad parameters, eg:
----------------------------------------------------------------
class ArgTypeError(TypeError):
def __init__(self, arg):
self.arg = arg
def __str__(self):
return "bad type for argument %r" % self.arg
def moo(cow):
if not isinstance(cow, str):
raise ArgTypeError('cow')
print "%s says moo!" % cow
# this error is not caused by wrong arg type:
var = 1 + 's'
function = moo
for arg in [1, 'rose']:
try:
function(arg)
except ArgTypeError, e:
print e
----------------------------------------------------------------
Output:
----------------------------------------------------------------
bad type for argument 'cow'
rose says moo!
Traceback (most recent call last):
File "/merlot1/yohell/eraseme/test.py", line 23, in -toplevel-
make_noise('rose')
File "/merlot1/yohell/eraseme/test.py", line 13, in moo
raise TypeError
TypeError
----------------------------------------------------------------
Hope it helps
/Joel Hedlund
--
http://mail.python.org/mailman/listinfo/python-list