python基础:捕获异常

一、基本语法
获取异常信息描述格式:
try:
…代码1…
…代码2…
…代码3…
except 异常类型 as 变量名:
…代码4…

注意:
变量名中保存的是异常信息

try:
    print('start..')
    print(1/0)
    print('end...')
except ZeroDivisionError as e:  #e为变量名,用来保存异常信息
    print('捕获到了异常')
    print(e)

运行结果:

捕获到了异常
division by zero

执行流程:
先执行try中的代码,如果代码2报错,则不会执行代码3,执行执行exception中的异常代码。

注意:
如果发生的异常类型和捕获的异常类型不相同,还是不能捕获异常,程序还会结束。

二、 捕获多个异常
捕获所有异常:
格式1:
try:
…代码1…
…代码2…
…代码2…
except:
…代码4…
注意:
except不用写任何内容即可:

try:
    print(1 / 0)
    lst = []
    print(lst[1])
except:
    print('捕货到了异常')
print('程序结束了...')

运行结果:

捕货到了异常
程序结束了...

格式2::
try:
…代码1…
…代码2…
…代码3…
except Exception:
…代码4…

Exception是各种异常类型的父类

try:
    print(1 / 0)
    lst=[]
    print(lst[1])
except Exception:
    print('捕获到了异常')
print('程序结束了')

运行结果:

捕获到了异常
程序结束了

三、else结构
咱们应该对else并不陌生,在if中,它的作用是当条件不满足时执行的实行;同样在try…except…中也是如此,即如果没有捕获到异常,那么就执行else中的事情
格式:
try:
… 代码1…
… 代码1…
… 代码1…
except 异常类型:
…代码4…
else:
…代码5…

扫描二维码关注公众号,回复: 4858135 查看本文章
try:
    print('开始了1...')
    # print(1/0)
    print('结束了')
except Exception:
    print('异常了')
else:
    print('哈哈哈')
print('程序执行完毕')

运行结果:

开始了1...
结束了
哈哈哈
程序执行完毕

四、try…finally结构
try…finally…语句用来表达这样的情况:
在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等。
说明:不管try语句有没有执行成功,都会执行finally当中的

格式:
try:
    ...代码1...
    ...代码2...
except 异常类型:
    ...代码3...
finally:
    ...代码4...

此种结构无论如何都会执行finally中的代码

try:
    print(1/0)
except ZeroDivisionError:
    print('报错了')
finally:
    print('都得执行我')
print('程序结束了...')

try:
    lst=[]
    print(lst[1])
except IndexError:
    print("程序报错了啊")
finally:
    print('都得执行')
print('程序结束了哦...')

运行结果:

报错了
都得执行我
程序结束了...

程序报错了啊
都得执行
程序结束了哦...

五、抛出系统异常
你可以用raise语句来引发一个异常,异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。
练习:判断输入字符串的长度,如果小于指定的长度就报错

while True:
    try:
        name = input('请输入姓名:')
        if len(name) < 3:
            raise Exception('输入的名字长度太短')
        else:
            pwd = input('请输入密码:')
        print(name, pwd)
    except Exception as e:
        print(e)

运行结果:

请输入姓名:ll
输入的名字长度太短
请输入姓名:123
请输入密码:123
123 123
请输入姓名:

猜你喜欢

转载自blog.csdn.net/weixin_44239541/article/details/86093232