在C中,如果我没有错,main
函数在没有错误发生时返回0,如果发生错误则返回0。错误处理方法
在Python中执行相同的操作是合适的(只要函数不必返回任何特定的值而只能指示成功/失败);或者只是处理异常?
在C中,如果我没有错,main
函数在没有错误发生时返回0,如果发生错误则返回0。错误处理方法
在Python中执行相同的操作是合适的(只要函数不必返回任何特定的值而只能指示成功/失败);或者只是处理异常?
在Python中,您不应该使用返回值来指示错误。你应该使用例外。
所以,要么让这个例外发射气泡,要么抛出一个新的。
def check_foo(foo):
if foo == bar:
do_something(args)
try:
check_foo(...)
except SomeError:
# Oops! Failure!
something_went_wrong()
else:
# Yay! Success!
everything_went_well()
在某些情况下是有意义的有一个返回一个布尔函数,但是这不应该被用来指示错误。
这通常用于在例行检查,其中一些可以是真或假,并且既不是例外(即,既不是错误):
def is_foo(foo):
return foo == "foo"
因此,不是像某些语言那样在函数中包含函数返回,而是执行所有代码,然后处理错误。我有它吗? –
@ J.C.Rocamonde是的。有时候,如果发生错误,你只是没有合理的事情去做,在这种情况下,你只是让他们冒泡并完全终止口译员。 –
不,你不应该。 Python有其他形式的错误处理,如果你真的想要返回一个成功的代码,true和false是更好的方法。作为一个调用者,你应该能够假设一切都如预期的那样,然后当出现问题时你可以抛出某种描述性错误。
对于命名功能'check_blub' /'is_blub'你应该返回'True'或'False'。通常也会看到名为'validate_blub'的函数,它通常会引发ValueError。 – kay
@cdarke感谢您的评论;但明白我没有学过C. :-) –