异常格式;
1.
try:
…代码1…
…代码2…
…代码3…
except 异常类型:
…代码4…
…代码5…
try:
print('程序开始了。。')
print(1/0)
print('程序结束了。。')
except ZeroDivisionError:
print('你除数为零了')
print('程序结束了。。')
输出:
程序开始了。。
你除数为零了
程序结束了。
try:
print('程序开始了。。')
print(1/0)
print('程序结束了。。')
except IndexError:
print('你除数为零了')
print('程序结束了。。')
输出:报错
程序开始了。。
Traceback (most recent call last):
File "D:/随机练/新建文件夹/02.py", line 74, in <module>
print(1/0)
ZeroDivisionError: division by zero
抛出异常,和捕获异常必须一致才起作用否则程序依旧报错
多个异常处理:
2.
try:
...代码1....
...代码2....
excect 异常类型1:
...代码3...
except 异常类型2: #依次寻找,直到找到为止
...代码4...
......
3.
try:
....代码1.。
。。。代码2.。。
。。。代码3。。。
except (异常类型1,异常类型2,异常类型3):
。。。代码4.。。。
eg)
lst=[1,2,3,]
try:
print('程序开始。。')
# print(1/0)
print('ASD')
print(lst[5])
except IndexError:
print('程序索引错误')
except ZeroDivisionError:
print('除数为零了')
2.
lst=[1,2,3,]
try:
print('程序开始。。')
# print(1/0)
print('ASD')
print(lst[5])
except (IndexError,ZeroDivisionError):
print('程序出错了')
try:
…执行代码1.。。
。。执行代码2.。。
except exception as e:
eg)
while True:
try:
name=input('请输入名字:')
if len(name)<3:
raise Exception('sss')
else:
pwd=input('请输入密码:')
print(name,pwd)
except Exception as e:
print(e)
......
5.手动抛出异常
raise 异常对象(异常的描述信息)
while True:
try:
name=input('请输入用户名:')
if len (name)<3:
raise Exception('出错了')
else:
pwd=input('请输入密码:')
print(name,pwd)
except Exception as e:
print(e)
6
格式:
try:
...
excpet 异常类型
。。。
。。。
finally:
...
无论如何都会执行finally中的代码
eg)
try:
print(1/0)
print('程序开始了。。')
except ZeroDivisionError:
print('程序出错了')
finally:
print('我是万能的')
print('程序结束了。。')
'''异常
异常是指程序报错就是异常
当发生异常时,我们需要捕获它,否则程序会停止运行'''
# print('程序开始了')
# # print(1/0) #division by zero
# print('hehehe')
# while True:
# try:
# ret=eval(input('请输入计算式:'))
# print(ret)
#
# except ZeroDivisionError:
# print('除了0类亲,请重新输入:')
'''捕获异常
基本语法:
try:
。。。代码1.。。。
。。。代码2.。。。
。。。。
except 异常类型:
。。。。
try一旦检查到异常,就会执行这个位置的逻辑
执行流程:
如果代码1错,不会执行代码2及以后的,执行except中的
异常'''
# try:
# print('start....')
# print(1/0)
# print('end....')
# except ZeroDivisionError:
# print('除0了,请重新输入:')
# print('over...')
'''except捕获多个异常
依次捕获直到捕获到对应异常
多分支格式:
try:
执行代码.。。
except 异常类型:
捕获异常1
except 异常类型:
捕获异常2
except 异常类型:
捕获异常3
。。。。
元组形式结构:
try:
执行代码。。。
except (异常类型1,异常类型2,异常类型3.。。):
捕获到异常
'''
#多分支格式:
# try:
# print('start...')
# lst=[1,2]
# print(lst[2])
# print(1/0)
# print('end...')
# except ZeroDivisionError:
# print('除0了,请重新输入:')
# except IndexError:
# print('索引越界了')
# 元组结构格式
# try:
# print('start...')
# lst=[1,2]
# print(1/0)
# print(lst[2])
# print('end...')
# except (ZeroDivisionError,IndexError):
# print('程序出错了')
'''获取异常信息的描述
try:
执行代码。。。
except 异常类型 as e:
执行异常。。。'''
# try:
# print(1/0)
# except ZeroDivisionError as e:
# print(e) #division by zero
'''捕获所有异常
try:
...代码1
except:
捕获异常1
或
try:
...代码2
except Exception as e:
捕获异常
。。。。
'''
# try:
# print(1/0)
# except Exception as e :
# print('捕获到异常了')
'''else
当条件不满足就会执行else下的语句'''
# try:
# print('hahaha')
# print(1/0)
# except:
# print('捕获到异常了')
# else:
# print('没有捕获到异常')
'''try...finally。。。
在程序中,如果一段代码必须执行,不管错误与否,那么用finally
不管try有没有成功都要执行finally后的'''
# try:
# print('start...')
# # print(1/0)
# lst=[1,2,3]
# print(lst[3])
# print('end....')
# except ZeroDivisionError as e:
# print(e)
# except IndexError as e:
# print(e) #list index out of range
# finally:
# print('无论如何都要执行我')
'''出发异常 raise抛出异常'''
#使用raise抛出系统异常
# while True:
# name= input('请输入姓名(不能小于3位):')
# try:
# if len(name)<3:
# raise Exception('姓名太少请重新输入:')
# else:
# pwd=input('请输入密码:')
# print(name,pwd)
# except Exception as e :
# print(e)