一、错误和异常
1.概念
两种容易辨认的错误
语法错误:一些关于语法的错误【缩进】
异常:代码完全正确,但是,程序运行之后,会报出 的错误
exception/error
代码演示:
list1 = [23,54,6,6] print(list1[2]) print(list1[3]) print(list1[4]) print("over") """ 6 6 Traceback (most recent call last): File "C:/Users/Administrator/Desktop/SZ-Python/Day15Code/textDemo01.py", line 4, in <module> print(list1[4]) IndexError: list index out of range """
异常特点:当程序在执行的过程中遇到异常,程序将会终止在出现异常的代码处,代码不会继续向下执行
解决问题:越过异常,保证后面的代码继续执行【实质:将异常暂时屏蔽起来,目的是为了让后面的代码的执行不受影响】
2.常见的异常
NameError:变量未被定义
TypeError:类型错误
IndexError:索引异常
keyError:
ValueError:
AttributeError:属性异常
ImportError:导入模块的时候路径异常
SyntaxError:代码不能编译
UnboundLocalError:试图访问一个还未被设置的局部变量
3.异常处理方式【掌握】
捕获异常
抛出异常
3.1捕获异常
try-except-else
语法:
try:
可能存在异常的代码
except 错误表示码 as 变量:
语句1
except 错误表示码 as 变量:
语句2
。。。
else:
语句n
说明:
a.try-except-else的用法类似于if-elif-else
b.else可有可无,根据具体的需求决定
c.try后面的代码块被称为监测区域【检测其中的代码是否存在异常】
d.工作原理:首先执行try中的语句,如果try中的语句没有异常,则直接跳过所有的except语句,执行else;如果try中的语句有异常,则去except分支中进行匹配错误码,如果匹配到了,则执行except后面的语句;如果没有except匹配,则异常仍然没有被拦截【屏蔽】
代码演示:
#一、try-except-else的使用 #1.except带有异常类型 try: print(10 / 0) except ZeroDivisionError as e: print("被除数不能为0",e) print("~~~~") """ 总结: a.try-except屏蔽了异常,保证后面的代码可以正常执行 b.except ZeroDivisionError as e相当于声明了一个ZeroDivisionError类型的变量【对象】,变量e中携带了错误的信息 """ #2.try后面的except语句可以有多个 class Person(object): __slots__ = ("name") try: p = Person() p.age = 19 print(10 / 0) except AttributeError as e: print("属性异常",e) except ZeroDivisionError as e: print("被除数不能为0",e) print("over") """ 总结: a.一个try语句后面可以有多个e