为什么 "except" 的这种用法是 Python 3 中的语法错误?

Why is this usage of "except" a syntax error in Python 3?

我正在尝试编写一个简单的程序,它会根据一天中的时间打开和关闭灯,在 Python 3.

尝试在 while 循环中使用 except KeyboardInterrupt: 时,我不断收到语法错误。这是错误:

except KeyboardInterrupt:
^
SyntaxError: invalid syntax

因为我已经用在线文档仔细检查了语法,所以我不知道自己做错了什么,我想我在这里缺少一些理解。

完整代码供参考:

#!/usr/bin/python  

import time
import datetime

TimeStart = datetime.time(17, 0, 0)
TimeEnd = datetime.time(18, 30, 0)

def onoff():
    while True:
        if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time():
            print("Pin 18  High")
        else:
            print("Pin 18  Low")
        except KeyboardInterrupt:
            pass
            print("Error..... Quiting.....")
            raise
            sys.exit()

time.sleep(30)   
onoff()

您不能在 try: ... except: ... 代码块之外使用 except 语句。

https://docs.python.org/3/tutorial/errors.html#handling-exceptions

因此您可以将代码改写为

while True:
    try:
        if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time() :
            print ("Pin 18  High")
        else:
            print ("Pin 18  Low")
    except KeyboardInterrupt:
        pass
        print("Error..... Quiting.....")
        raise
        sys.exit()

我没试过但本质上是

  • try 子句包装 if 语句,并且
  • 任何 KeyboardInterrupt 都将被 except 语句捕获。