2015-07-10 173 views
6

在C中,如果我没有错,main函数在没有错误发生时返回0,如果发生错误则返回0。错误处理方法

在Python中执行相同的操作是合适的(只要函数不必返回任何特定的值而只能指示成功/失败);或者只是处理异常?

+1

对于命名功能'check_blub' /'is_blub'你应该返回'True'或'False'。通常也会看到名为'validate_blub'的函数,它通常会引发ValueError。 – kay

+0

@cdarke感谢您的评论;但明白我没有学过C. :-) –

回答

13

在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" 
+0

因此,不是像某些语言那样在函数中包含函数返回,而是执行所有代码,然后处理错误。我有它吗? –

+0

@ J.C.Rocamonde是的。有时候,如果发生错误,你只是没有合理的事情去做,在这种情况下,你只是让他们冒泡并完全终止口译员。 –

3

不,你不应该。 Python有其他形式的错误处理,如果你真的想要返回一个成功的代码,true和false是更好的方法。作为一个调用者,你应该能够假设一切都如预期的那样,然后当出现问题时你可以抛出某种描述性错误。