一.什么是异常,异常和bug有什么区别?
异常:指的是在程序运行过程中发生的异常事件。
bug:程序错误,即英文的Bug,也称为缺陷、臭虫,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。
以上是百度百科的介绍
因此,总结一下,异常是你的程序在运行时出现问题,即中断运行(报错)
bug只是你在运行中发现的一些小错误,但是程序还是能正常运行。
接下来那就让我们具体讲一讲异常吧。。
二.异常的写法
try:
可能会出现问题的代码
except:
如果出现异常要执行的代码
注:try代码块内不建议放入过多代码,仅放入可能会出问题的代码即可。
例:
尝试以r方式打开文件时,若文件不存在则会报错。
try:
f = open('test.txt','r')
except:
f = open('test.txt','w')
三.捕获指定异常
语法
try:
可能发生错误的代码
except 异常类型:
如果捕获到该异常执行的代码
例:
try:
print(num)
except NameError:
print('有错误')
捕获多个指定异常
捕获多个异常时,可以把要捕获的异常类型的名字,放到except后,并使用元组的方式进行书写。
try:
print(1/0)
except (NameError,ZeroDivisionError):
print('有问题')
捕获异常描述信息
as:起别名
捕获所有异常
Exception是所有程序异常的父类
异常中的else与finally
语法:
try:
可能会出现问题的代码
except:
如果出现异常要执行的代码
else:
没有发生异常时执行的代码
finally:
无论是否发生异常都要执行的代码(常用来关闭文件等资源释放时)
示例:
四.自定义异常
在python中,抛出自定义异常的语法为raise 异常类对象
例:
需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足3位,则报错,即抛出自定义异常,并捕获该异常)
raise抛出异常后,except捕获异常
raise ...from...买一送一的异常
raise A from B即抛出A异常也抛出B 异常
总结
异常语法:
try:
可能会出现问题的代码
except:
如果出现异常要执行的代码
else:
没有发生异常时执行的代码
finally:
无论是否发生异常都要执行的代码(常用来关闭文件等资源释放时)
捕获异常
多个异常类型用元组存放,xx为异常的描述信息
except 异常类型:
代码
except 异常类型 as xx:
代码
自定义异常
# 1.自定义异常类
class异常类类名(Exception):
代码
# 设置抛出异常的描述信息
def __str__(self):
return ...
# 2.抛出异常
raise 异常类名()
# 捕获异常
except Exception...