python3中的随机选择和提升

python3中的随机选择和提升,python,python-3.x,exception,Python,Python 3.x,Exception,我需要编写一个函数,随机抛出三个异常之一: ValueError、TypeError或RuntimeError。在函数调用的地方,处理所有三个异常。 我如何理解,我需要“提出”一个例外,但我不明白“提出”如何与“随机选择”一起工作。你能帮助我吗?谢谢你的回答 def function1 (): try: import random raise random.choiсe([ValueError('Error1'), TypeError('Error2'),

我需要编写一个函数,随机抛出三个异常之一: ValueError、TypeError或RuntimeError。在函数调用的地方,处理所有三个异常。 我如何理解,我需要“提出”一个例外,但我不明白“提出”如何与“随机选择”一起工作。你能帮助我吗?谢谢你的回答

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!')

我明白你想做什么了。代码的问题是,您正在引发所有三个错误,而您只打算随机引发一个错误。以下是一种方法:

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

try:
    raise error(message)
注释

  • errors
    是一个元组列表,每个元组表示一个错误和一条消息
  • 调用
    random.choice()
    然后选择其中一个错误和消息
  • 现在,这是一个提出错误的问题

尽我所能解释这一点,您可以使用
int(choice(lst))
并从
'a'(ValueError),[1,2,3](TypeError)
中进行选择,随机抛出前两个错误,然后您可以
引发
运行时错误

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)
值错误
回溯(最近一次呼叫最后一次):
文件“vash.py”,第13行,在
处理程序(lst)
处理程序中第11行的文件“vash.py”
引发运行时错误(“运行时错误”)
运行时错误:运行时错误

如果运行代码会发生什么?您需要更具体地说明您不了解的内容。不,提问者代码创建了三个异常对象,但只引发了一个异常对象。@HaiVu谢谢!现在我明白它是如何工作的了。
Value Error
Traceback (most recent call last):
  File "vash.py", line 13, in <module>
    handler(lst)
  File "vash.py", line 11, in handler
    raise RuntimeError('Runtime Error')
RuntimeError: Runtime Error