异常处理

异常:就是在程序执行的过程中有逻辑等其他的错误导致 , 程序终止运行。

异常处理:在程序执行的过程中 , 发现错误之火对其进行处理 , 让程序可以正常执行不为此被迫停止运行。

1 异常错误

1 , 语法错误 —— SyntaxError

2、逻辑错误

# TypeError 不同的类型数据之间的无效操作
# ValueError 值类型错误
# IndentationError 缩进错误 , 缩进不一致
# AttributeError 没有找到对应的属性
# IndexError 下标索引超出范围
# NameError 名字未定义
# KeyError 在字典中找不到对应的键

2 异常处理

语法格式:

try:
代码块(感觉有问题的代码)
except 异常类型:
判断到对应的异常执行的代码
else:
代码块没有异常执行的代码
finally:
不管有没有异常都会执行

在异常类型后面加上as 变量名 , 即将异常信息赋值给变量 , 可以获取异常错误的信息

Exception:可以捕获所有的异常

try:
res = '花心超人是个大帅哥'
print(res[60])
except Exception:
print('字符串没有那么长度')
else:
print('一切正常')
finally:
print('就是要执行')
try:
res = '花心超人是个大帅哥'
print(res[60])
except Exception as a:
print('字符串没有那么长度')
print(a)
else:
print('一切正常')
finally:
print('就是要执行')

3 定义异常

1、assert (断言)

发送的AssertionError异常错误

assert 判断表达式 , 返回异常信息(当判断表达式为False时执行)。
相当于 我感觉《判断表达式》是正确的,如果错,就给我报错吧,就用《异常信息》提醒我错了
这句话就是怕以后出事,所以错误控制在这一步,错了赶紧改
感觉鸡肋,判断表达式就已经知道对不对了,还报啥错啊?
x = 100
y = 200
# x>y不对,所以这一步就会报错,执行不到print(x > y)
assert x > y , '大脑发育不完全 , 小脑完全不发育'
print(x > y)

2、raise

raise Exception(异常信息) 按自己心意抛出异常
money = int(input('请输入支付金额:'))
if money < 650:
raise Exception(f'money不能小于 650 。当前money的值为{money} , 支付失败')
else:
print('支付成功')