SyntaxError: invalid syntax
解析器会重复出错的行,并在行中最早发现的错误位置上显示一个小“箭头”。错误(至少是被检测到的)就发生在箭头 指向 的位置。同时也会显示文件名和行号,这样你就可以知道错误来自哪个脚本,什么位置。
异常
异常也有不同的类型,异常类型做为错误信息的一部分显示出来,有零除错误( ZeroDivisionError ) ,命名错误( NameError) 和 类型错误( TypeError )等等。
try 语句
(1)首先,执行 try 子句 (在 try 和 except 关键字之间的部分)。
(2)如果没有异常发生, except 子句 在 try 语句执行完毕后就被忽略了。
(3)如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的except子句。然后继续执行 try 语句之后的代码。
(4)如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中。如果最终仍找不到对应的处理语句,它就成为一个 未处理异常 ,终止程序运行,显示提示信息。
raise 语句
强制指定的异常发生。要抛出的异常由 raise 的唯一参数标识。它必需是一个异常实例或异常类(继承自 Exception 的类)。
>>> try:
... raise KeyboardInterrupt ... finally:
... print 'Goodbye, world!'
不管有没有发生异常, finally子句 在程序离开 try 后都一定会被执行。当 try 语句中发生了未被 except 捕获的异常(或者它发生在 except 或 else 子句中),在 finally 子句执行完后它会被重新抛出。 try 语句经由 break ,continue 或 return 语句退 出也一样会执行 finally 子句。
with 语句
使文件之类的对象可以 确保总能及时准确地进行清理。