random.choice并在python3中加注

时间:2018-10-14 22:05:25

标签: python python-3.x exception

我需要编写一个随机抛出三个异常之一的函数: ValueError,TypeError或RuntimeError。代替函数调用,处理所有三个异常。 我的理解是,我需要“提高”例外之一,但我不理解“提高”如何与“ random.choice”一起工作。你能帮助我吗?谢谢您的回答。

def function1 ():
    try:
        import random
        raise random.choiсe([ValueError('Error1'), TypeError('Error2'), RuntimeError('Error3')])
    except ValueError:
        print ('Wrong Value!')
    except TypeError:
        print ('Wrong Type!')
    except RuntimeError:
        print ('Runtime Error!')

2 个答案:

答案 0 :(得分:0)

我明白了您要完成的工作。代码的问题在于,您将引发所有三个错误,而您的意图只是随机引发一个。这是一种方法:

errors = [
    (ValueError, 'Error1'),
    (TypeError, 'Error2'),
    (RuntimeError, 'Error3')
]
error, message = random.choice(errors)

try:
    raise error(message)

注释

  • errors是一个元组列表,每个元组表示一个错误和一条消息
  • 调用random.choice(),然后选择以下错误和消息之一
  • 现在,这是引发该错误的问题

答案 1 :(得分:0)

据我所知,您可以使用ctl并从int(choice(lst))中进行选择以随机抛出前两个错误,然后可以'a'(ValueError), [1, 2, 3](TypeError) raise

RuntimeError
from random import choice
lst = ['a', [1, 2, 3]]

def handler(x):
    try:
        a = int(choice(lst))
    except TypeError:
        print('Type Error')
    except ValueError:
        print('Value Error')
    raise RuntimeError('Runtime Error')

handler(lst)