Python初学(13)错误和异常处理 | 您所在的位置:网站首页 › Python的networkwlan属性错误 › Python初学(13)错误和异常处理 |
在程序的编写和运行过程中不可避免地会产生错误和异常,Python语言采用结构化的异常处理机制捕获和处理异常。 一.程序的错误Python程序的错误通常可以分为3种类型,即语法错误、运行时错误和逻辑错误。 1.语法错误语法错误是指源代码中的拼写语法错误,这些错误导致编译器无法将源代码转换为字节码,故也称编译错误。出现语法错误时,编译器显示SyntaxError错误信息。 import random print("Good Luck!" print("Today your lucky number is: ",random.choice(range(10)))错误出现在第四行,因为第三行没有右括号,所以编译器发现错误。 2.运行时错误运行时错误是指程序解释执行过程中产生的错误。 例如,没有导入相关程序,解释器会抛出NameErro错误;如果有零除运算,解释器抛出ZeroDivisionError错误信息;如果程序试图打开不存在的文件,解释器抛出FileNotFound错误信息。 #未导入random模块 print("Hello!") print("Today is ",random.choice(range(7)))逻辑错误程序可以执行,但结果错误。 import math a=1;b=2;c=1 #错误公式 x1=-b+math.sqrt(b*b-4*a*c)/2*a x2=-b-math.sqrt(b*b-4*a*c)/2*a print(x1,x2) #正确公式 x1=(-b+math.sqrt(b*b-4*a*c))/(2*a) x2=(-b-math.sqrt(b*b-4*a*c))/(2*a) print(x1,x2)Python语言采用结构化的异常处理机制。在执行过程中,发生错误抛出异常;可通过try语句来定义代码块,以运行可能抛出异常的代码;通过expect语句可以不或特定的异常并执行相应的处理; else语句执行无异常时的处理;通过finally语句可以保证即时发生异常,也可以事后清理资源。 用Python的结构化异常处理机制,其伪代码一般为: try: 可能发生异常的语句 expect Exception1: #捕获异常Exception1 发生异常执行的语句 expect Exception2: #捕获异常Exception2 发生异常执行的语句 expect: #捕获其他异常 发生异常执行的语句 else: #无异常 无异常执行的语句 finally: 无论发生异常与否都保证执行的语句将错误处理和正常代码分开,更加高效的处理错误。 示例: try: f=open("testfile0txt","w") f.write("这是一个测试文件!") f1=open("textfile1.txt","r") #报错:没有找到文件或读取文件失败 except IOError: print("没有找到文件或读取失败!") else: print("文件写入成功!") finally: f.close() 2.内置的异常类常见的异常示例: (1)NameError:尝试访问一个未声明的变量 >>>noname #报错.NameError: name 'noname' is not defined (2)SyntaxError:语法错误 >>>int a #报错.SyntaxError: invalid syntax (3)AttributeError:访问位置对象属性。 >>>a=1 >>>a.show() #报错.AttributeError: 'int' object has no attribute 'show' (4)TypeError:类型错误 >>>11+'abc' #报错.TypeError: unsupported operand type(s) for +: 'int' and 'str' (5)ValueError:数值错误 >>>int('abc') #报错.ValueError: invalid literal for int() with base 10: 'abc' (6)ZeroDivisionErrorL:零除错误 >>>1/0 #报错.ZeroDivisionError: division by zero (7)IndexError:索引超出范围 >>>a=[10,11,12] >>>a[3] #报错.IndexError: list index out of range (8)KeyError:字典关键字不存在 >>>m={'1':'yes','2':'no'} >>>m['3'] #报错.KeyError: '3' |
CopyRight 2018-2019 实验室设备网 版权所有 |