当内置函数(如 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'输出integer division or modulo by zero This is an example of catching ArithmeticError