Python中函数的异常处理

时间:2009-01-13 09:11:12

标签: python exception-handling

假设我有一个函数定义:

def test():
    print 'hi'

每当我给出一个参数时,我都会得到一个TypeError。

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

6 个答案:

答案 0 :(得分:5)

try: 
    test()
except TypeError:
    print "error"

答案 1 :(得分:1)

In [1]: def test():
     ...:     print 'hi'
     ...:

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

以下是tutorial

中的相关部分 顺便说一下。要修复此错误,您不应该在try-except中包装函数调用。而是使用正确数量的参数调用它!

答案 2 :(得分:1)

你说

  

现在,我想把def语句   在尝试。怎么做。

def语句是正确的,它不会引发任何异常。因此将它放在try中将不会做任何事情。

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

try: 
    test()
except TypeError:
    print "error"

答案 3 :(得分:1)

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

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

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

答案 4 :(得分: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)

答案 5 :(得分:0)

这是有效的:

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


test()