请考虑以下代码:
dynamic_cast
有什么区别吗? 我什么时候应该使用return Exception?什么时候应该使用raise?
答案 0 :(得分:15)
raise
和return
是两个固有不同的关键字。
raise
,在其他语言中通常称为throw
,会在调用堆栈的当前级别中产生错误。您可以通过覆盖try
中可能引发错误的区域并在except
中处理该错误来捕获引发的错误。
try:
if something_bad:
raise generate_exception()
except CertainException, e:
do_something_to_handle_exception(e)
另一方面, return
返回一个值到调用函数的位置,所以返回异常通常不是你在这种情况下寻找的功能,因为异常本身不是触发except
的事情是触发它的异常的raise
。