返回和提出异常之间有什么区别吗?

gra*_*rts 9 python exception-handling

请考虑以下代码:

    def f(x):
        if x < 10:
            return Exception("error")
        else:
            raise Exception("error2")

    if __name__ == "__main__":
        try:
            f(5)                        # f(20)
        except Exception:
            print str(Exception)
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?我什么时候应该使用return Exception?什么时候应该使用raise?

Ziy*_*her 18

raise并且return是两个固有不同的关键字.


raise,通常称为throw其他语言,在调用堆栈的当前级别产生错误.您可以通过覆盖可能在其中引发错误的区域并在中try处理该错误来捕获引发的错误except.

try:
    if something_bad:
        raise generate_exception()
except CertainException, e:
    do_something_to_handle_exception(e)
Run Code Online (Sandbox Code Playgroud)

return在另一方面,返回一个值到这个函数是被调用,所以通常返回一个例外是不是你在这样的情况下寻找功能,因为除了本身不是引发的东西except是不是raiseING触发它的异常