异常处理
NameError a
IndexError [ ][1]
ValueError int('haha')
SyntaxError 语法错误
FileNotFoundError open('aa')
````以上都是一些常见的异常类型 , 异常发生了,程序就会报错,后面的程序就不执行了.

多行报错
在嵌套调用的过程中,内部的代码出现了问题,外部所有调用的地方都成为报错追溯信息的一部分
解决办法:从下往上找,找到出错的哪一行,看看能不能看出问题,不过看不懂,就把最后一行的错误类型和详细提示贴到百度里,看看有没有解决办法
Python提供了一种特定的语法结构来处理异常
try:
被检测的代码块
except 异常类型:
代码 try中一旦检测到异常,且和except接收的异常类型相同,就会执行下面的逻辑代码
也可以多分支处理:
try:
pass
except 错误类型:
pass
except 错误类型2:
pass
万能异常
try:
pass
except exception as e: #什么错误类型都接收,然后把错误类型复制给e
print(e) #查看错误类型
pass 做一些通用性的处理
def buy():
print('buy')
name
def back():
print(back)
[][1]
def show():
print('show')
1/0
def minu():
l=[('购物',buy),('退货',back),('查看订单',show)]
while 1: #一直循环,直到break
for num,i in enumerate(l,1):
print(i,num) #打印l
number=input('>>>') #当你要处理的内容不确定的时候,有用户参与的时候最容易出错
try:
func=l[int(number)-1][1]
func()
except Exception as e: #万能异常
print(e)
print('用户在%s操作发生了不可知的异常' % l[int(number)-1][0]) #通用性的处理
break
minu()
多分支+万能异常: 万能异常放在异常处理的最下面
def buy():
print('buy')
name
def back():
print(back)
[][1]
def show():
print('show')
1/0
def minu():
l=[('购物',buy),('退货',back),('查看订单',show)]
while 1:
for num,i in enumerate(l,1):
print(i,num)
number=input('>>>')
print(l[int(number)-1])
try:
func=l[int(number)-1][1]
func()
except IndexError: #针对性的处理
print('aaa')
except Exception as e:#通用性的处理
print(e.args,e.__traceback__.tb_frame,e.__traceback__.tb_lineno)
print('用户在%s操作发生了不可知的异常' % l[int(number)-1][0])
minu()
else分支,当try中的代
else分支 :当try中的分支不发生异常的时候,走else分支
finally分支 :即便遇到报错,程序结束 ,也会先执行finally里的代码, 用于回收操作系统的资源
try:
print('aaa') # 给某某某发邮件
name
int(input('>>>')
except NameError:
print('name error')
except Exception as e:
print('Exception')
else: # 当try中的代码不发生异常的时候 走else分支
print('else')
finally: # 无论如何都会被执行
print('finally')
其他(目前用不到)
raise 主动抛异常: 给其让开发者看的
assert 布尔值 :断言语法

浙公网安备 33010602011771号