假设我有一个函数定义:
def test():
print 'hi'
每当我给出一个论点时,我都会得到一个 TypeError 。
现在,我想将 def 语句放在 try 中。我该怎么做呢?
假设我有一个函数定义:
def test():
print 'hi'
每当我给出一个论点时,我都会得到一个 TypeError 。
现在,我想将 def 语句放在 try 中。我该怎么做呢?
try:
test()
except TypeError:
print "error"
如果你想在调用时抛出错误,听起来你可能想要,你可以试试这个方法:
def test(*args):
if args:
raise
print 'hi'
这会将错误从调用位置转移到函数。*args
它通过列表接受任意数量的参数。并不是说我知道你为什么要这样做。
在 Python 中处理可变数量参数的更好方法如下:
def foo(*args, **kwargs):
# args will hold the positional arguments
print args
# kwargs will hold the named arguments
print kwargs
# Now, all of these work
foo(1)
foo(1,2)
foo(1,2,third=3)
你说
现在,我想将 def 语句放在 try 中。这个怎么做。
该def
声明是正确的,它没有引发任何异常。所以把它放在 atry
不会做任何事情。
引发异常的是对函数的实际调用。所以应该把它放在try
:
try:
test()
except TypeError:
print "error"
In [1]: def test():
...: print 'hi'
...:
In [2]: try:
...: test(1)
...: except:
...: print 'exception'
...:
exception
这是教程中的相关部分
顺便一提。要修复此错误,您不应将函数调用包装在 try-except 中。而是用正确数量的参数调用它!
这是有效的:
try:
def test():
print 'hi'
except:
print 'error'
test()