2024-04-25 19:54:12 发布
网友
我是python新手,需要了解python在以下情况下是如何工作的:
func1(func2(param1, param2), expected_value)
在哪里
func1(param_x, expected):
如果参数x与预期一致,则返回true。这里param_x可能是func2引发的异常。我可能期望出现异常,并需要断言相同的异常。你知道吗
我的问题是:
如果func2引发异常,它的行为如何?你知道吗
func2
取决于您希望它如何处理异常。查看试块。 https://docs.python.org/2/tutorial/errors.html
如果没有受到伤害,它就会破坏脚本。你知道吗
重要的是要理解,在您的代码func1(func2(param1, param2), expected_value)中,如果func2引发异常,func1将永远不会被调用。你知道吗
func1
这是因为一个异常打破了对Python语句的普通计算。当引发异常时,发生异常的语句将立即停止计算。除非该语句在try块中,否则正在运行的函数也会立即停止,异常会出现在调用函数的地方。你知道吗
try
如果希望func1捕获由func2调用的异常,则需要让func1自己调用func2。也就是说,func1的参数不能只是func2的返回值,而必须以某种形式包含函数及其参数。这就是unittest.TestCase的^{}方法以最简单的形式工作的方式。传递一个可调用的参数和一组参数,以及期望引发的异常类型。另一个选项可能是传递一个已绑定func2参数的可调用零参数,例如functools.partial实例或类似lambda: func2(param1, param2)的lambda表达式。你知道吗
unittest.TestCase
functools.partial
lambda: func2(param1, param2)
如果param_x是func2返回的异常,那么您可以简单地检查func1中param_x的值(例如param_x==namererror)。如果param_x是func2引发的异常,那么程序将停止打印一个回溯,描述在func2中错误发生的位置。如果您想处理后一种情况下的错误,我建议将func2的返回值设置在func1调用之外,并将其包装在try中(除了block)。e、 g
try: param_x = func2(param1, param2) except NameError: param_x = new_val func1(param_x, expected_value)
如果要将引发的错误作为参数传递给func1,可以尝试以下操作:
try: param_x = func2(param1, param2) except NameError: param_x = NameError except AnotherError: param_x = AnotherError except: print "UNEXPECTED ERROR" raise func1(param_x, expected_value)
如果这不是你要找的,告诉我。你知道吗
取决于您希望它如何处理异常。查看试块。 https://docs.python.org/2/tutorial/errors.html
如果没有受到伤害,它就会破坏脚本。你知道吗
重要的是要理解,在您的代码
func1(func2(param1, param2), expected_value)
中,如果func2
引发异常,func1
将永远不会被调用。你知道吗这是因为一个异常打破了对Python语句的普通计算。当引发异常时,发生异常的语句将立即停止计算。除非该语句在
try
块中,否则正在运行的函数也会立即停止,异常会出现在调用函数的地方。你知道吗如果希望} 方法以最简单的形式工作的方式。传递一个可调用的参数和一组参数,以及期望引发的异常类型。另一个选项可能是传递一个已绑定
func1
捕获由func2
调用的异常,则需要让func1
自己调用func2
。也就是说,func1
的参数不能只是func2
的返回值,而必须以某种形式包含函数及其参数。这就是unittest.TestCase
的^{func2
参数的可调用零参数,例如functools.partial
实例或类似lambda: func2(param1, param2)
的lambda表达式。你知道吗如果param_x是func2返回的异常,那么您可以简单地检查func1中param_x的值(例如param_x==namererror)。如果param_x是func2引发的异常,那么程序将停止打印一个回溯,描述在func2中错误发生的位置。如果您想处理后一种情况下的错误,我建议将func2的返回值设置在func1调用之外,并将其包装在try中(除了block)。e、 g
如果要将引发的错误作为参数传递给func1,可以尝试以下操作:
如果这不是你要找的,告诉我。你知道吗
相关问题 更多 >
编程相关推荐