Python 3.3中的异常提升

时间:2013-02-24 20:59:16

标签: python

我在书中有这个例子,但它在我的python 3.3

中不起作用
x = 'item found'

def search():
    raise x or return

try:
    search()
except x:
    print('exception')
else:
    print('no exception')

有谁可以告诉我为什么?

1 个答案:

答案 0 :(得分:5)

简单:return是一个语句,而不是表达式。声明必须按照自己的方式出现。 raise也是一个声明,它期望它的表达式来评估要引发的异常,但xreturn语句都不能满足这一要求。

就目前而言,这条线完全是胡说八道。它不是有效的Python。

相反,Python解析器会将此代码标记为无效,并为整个文件引发SyntaxError异常。实际上不会运行文件中包含的代码:

  File "demo.py", line 4
    raise x or return
                    ^
SyntaxError: invalid syntax