异常处理
什么是异常,其实异常就是我们通常所说的报错。
一、语法异常(错误都是SyntaxError)
if #SyntaxError
0 = 1 #SyntaxError
二、逻辑异常(错误类型往往是不一样的)
aaa # NameError
l=['egon','aa']
l[3] # IndexError
dic={'name':'egon'}
dic['age'] # KeyError
怎样去解决这样的异常问题的,我们需要对异常进行一个捕捉
1.try……except
基本语法为
try:
被检测的代码块
except 异常类型:
try中一旦检测到异常,就执行这个位置的逻辑
print(1)
try: # 尝试
num = input('输入一个值') #dic{[657]}
dic = {'0': 'a'}
print(dic[num]) ##dic{[657]}
dic = {'0': 'a'}
print(3) # 代码自上而下,上面会运行
1 / int(num) # 错误不影响其他的代码,报错马上终止try缩进里面的代码
print(4)
except ZeroDivisionError as e: # 除此之外 # try里面的代码出了什么错误,就得用什么错误捕捉 # as是把错误赋值给e
print('e:', e)
except KeyError as e: # 可以写多个except捕捉多个异常
print('e:', e)
2.这是一个万能的异常Exception,让我们举个栗子
s1 = 'hello'
try:
int(s1)
except Exception as e:
print(e)
了解
1.raise 抛出异常
只在创建框架、创建语言的时候有用
print(1)
raise ZeroDivisionError('小可爱,主动抛错干嘛')
print(2)
2.assert 断言
最早的时候没有pycharm,拿这个做调试
a = 1
a += 1
assert a == 3 # 条件成立会跳过,条件错误会报AssertionError错
print(3)
3.finally 最终的
print(1)
try: # 尝试
1 / 1
except Exception as e: # Exception可以捕捉任意异常
print('e:', e)
finally: # 最终的意思,无论报不报错都会打印
print(3)