异常处理的目的:
# 1、不希望遇到异常就退出 # 2、 如果遇到异常希望做特殊处理,而不是直接退出程序
常见的异常
NameError
缩进的语法错误 IndentationError
IndexError
SyntaxError 语法错误
KeyError 键值错误
AttributeError
ValueError
AssertionError 断言异常
try except 语句
except 可以有多个
# Exception 是很多异常类的基类 # 如果父类异常捕获放在最前面,就会吞噬后面所有的子类异常捕获 # 如果捕获的错误异常与触发的错误异常不一致,程序就捕获不到,然后抛出异常
try:
print("start...")
#实际不存在这个文件,如果存在则会执行这一步,不存在则会执行except
fp = open("test.txt")
print("end....")
except:
print("no such file ")
try:
print("start...")
int("abc")
a = 100 / 0
# 内建异常
except ValueError as e:
print(e)
except ZeroDivisionError:
print("除数为0")
except Exception:
print("this is exception")
print("prcoess end ....")
else结构 --没有任何异常发生的时候执行 finally 结构--不管有没有异常,不管异常有没有被捕获,都执行
try:
print("else test...")
int("abc")
except ValueError:
print("value error")
else:
print("else test end...")
try:
print("finally test...")
int("abc")
# 1/0
except ValueError:
print("value error")
# 无论什么情况也要执行
finally:
print("finally end...")
手动抛出异常
# 手动抛出异常 # raise 关键字 # raise # raise 异常类 # raise 异常类(说明信息)
raise IndexError
raise IndexError("超出范围")
print("end raise..")