Обработка исключений функции в Python - PullRequest
0 голосов
/ 13 января 2009

Предположим, у меня есть определение функции:

def test():
    print 'hi'

Я получаю TypeError всякий раз, когда даю аргумент.

Теперь я хочу попробовать определение def. Как мне это сделать?

Ответы [ 6 ]

5 голосов
/ 13 января 2009
try: 
    test()
except TypeError:
    print "error"
1 голос
/ 14 января 2009

Лучший способ обработки переменного числа аргументов в 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)
1 голос
/ 14 января 2009

Если вы хотите выдать ошибку во время вызова, что звучит так, как вы, возможно, захотите, попробуйте следующий подход:

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

Это сместит ошибку с места вызова на функцию. Он принимает любое количество параметров через список *args. Не то чтобы я знаю, почему ты хочешь это сделать.

1 голос
/ 13 января 2009

Вы сказали

Теперь я хочу поставить определение def в попытке. Как это сделать.

Оператор def является правильным, он не вызывает никаких исключений. Таким образом, его вставка в try ничего не даст.

Исключением является фактический вызов функции. Так что вместо этого следует указать try:

try: 
    test()
except TypeError:
    print "error"
1 голос
/ 13 января 2009
In [1]: def test():
     ...:     print 'hi'
     ...:

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

Вот соответствующий раздел учебника

Кстати. Чтобы исправить эту ошибку, вы не должны переносить вызов функции в try-кроме. Вместо этого вызывайте его с правильным количеством аргументов!

0 голосов
/ 14 января 2009

Это действительно:

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


test()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...