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

时间:2016-10-29 03:53:22

标签: python exception-handling

请考虑以下代码:

dynamic_cast

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

1 个答案:

答案 0 :(得分:15)

raisereturn是两个固有不同的关键字。

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

try:
    if something_bad:
        raise generate_exception()
except CertainException, e:
    do_something_to_handle_exception(e)
另一方面,

return返回一个值到调用函数的位置,所以返回异常通常不是你在这种情况下寻找的功能,因为异常本身不是触发except的事情是触发它的异常的raise