异常

异常格式;
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值