0

假设我有一个函数定义:

def test():
    print 'hi'

每当我给出一个论点时,我都会得到一个 TypeError 。

现在,我想将 def 语句放在 try 中。我该怎么做呢?

4

6 回答 6

5
try: 
    test()
except TypeError:
    print "error"
于 2009-01-13T09:13:25.053 回答
1

如果你想在调用时抛出错误,听起来你可能想要,你可以试试这个方法:

def test(*args):
    if args:
        raise
    print 'hi'

这会将错误从调用位置转移到函数。*args它通过列表接受任意数量的参数。并不是说我知道你为什么要这样做。

于 2009-01-13T21:20:28.877 回答
1

在 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)
于 2009-01-13T21:21:03.620 回答
1

你说

现在,我想将 def 语句放在 try 中。这个怎么做。

def声明是正确的,它没有引发任何异常。所以把它放在 atry不会做任何事情。

引发异常的是对函数的实际调用。所以应该把它放在try

try: 
    test()
except TypeError:
    print "error"
于 2009-01-13T10:42:30.693 回答
1
In [1]: def test():
     ...:     print 'hi'
     ...:

In [2]: try:
     ...:     test(1)
     ...: except:
     ...:     print 'exception'
     ...:
exception

这是教程中的相关部分

顺便一提。要修复此错误,您不应将函数调用包装在 try-except 中。而是用正确数量的参数调用它!

于 2009-01-13T09:21:27.770 回答
0

这是有效的:

try:
  def test():
    print 'hi'
except:
  print 'error'


test()
于 2009-01-13T21:05:39.627 回答