IndentationError 异常在解析器发现不符合缩进规则的源代码时发生。在导入模块时,我们可以捕获它,因为模块将在首次导入时进行编译。你无法在包含 try/except 块的同一模块中捕获它,因为对于此异常,Python 将无法完成模块的编译,并且模块中的任何代码都不会运行。我们将给定代码重写如下以处理异常示例try: def f(): z=['foo', 'bar'] for i in z: if i == 'foo': except IndentationError as e: print e输出"C:/Users/TutorialsPoint1/~.py", line 5 if i ... 阅读更多
当像 input() 或 raw_input() 这样的内置函数在遇到输入流的末尾之前没有读取任何数据时,会引发 EOFError 异常。像 read() 这样的文件方法在文件末尾返回空字符串。给定代码重写如下以捕获 EOFError 并找到其类型。示例#eofError.py try: while True: data = raw_input('prompt:') print 'READ:', data except EOFError as e: print e 然后,如果我们在终端运行脚本 $ echo hello | python eofError.py输出prompt:READ: hello prompt:EOF when reading a line
当你的代码引用当前作用域中不存在的名称时,会引发 NameError 异常。例如,未限定的变量名。给定代码重写如下以捕获异常并找到其类型。示例import sys try: def foo(): print magnolia foo() except NameError as e: print e print sys.exc_type 输出C:/Users/TutorialsPoint1/~.py global name 'magnolia' is not defined
当序列引用超出范围时,会引发 IndexError 异常。给定代码重写如下以捕获异常并找到其类型示例import sys try: my_list = [3,7, 9, 4, 6] print my_list[6] except IndexError as e: print e print sys.exc_type输出C:/Users/TutorialsPoint1~.py list index out of range
当算术运算超出变量类型的限制时,会引发 OverflowError 异常。长整数随着值的增长分配更多空间,因此最终会引发 MemoryError 异常。浮点异常处理没有标准化,但是。普通整数根据需要转换为长整数值。示例给定代码重写为捕获异常如下i=1 try: f = 3.0**i for i in range(100): print i, f f = f ** 2 except OverflowError as err: print 'Overflowed after ', f, err输出我们得到以下 OverflowError 作为输出如下C:/Users/TutorialsPoint1/~scratch_1.py 浮点值:0 3.0 1 9.0 2 81.0 3 6561.0 4 43046721.0 ... 阅读更多
ArithmeticError 异常是所有因数值计算而发生的错误的基类。它是以下内置异常的基类:OverflowError、ZeroDivisionError、FloatingPointError我们可以如下捕获给定代码中的异常示例import sys try: 7/0 except ArithmeticError as e: print e print sys.exc_type print 'This is an example of catching ArithmeticError'输出整数除法或模运算除以零 这是一个捕获 ArithmeticError 的示例