python获取异常信息(try...)、raise抛出异常

398 阅读2分钟

目录

 

1.获取异常的信息描述

2.捕获所有异常

3.try...else...

4.try...finally...

5.raise抛出系统异常


1.获取异常的信息描述

格式:

try :

     ...执行代码...

     ...执行代码...

except  异常类型  as  变量名:

     ...执行异常...

     ...执行异常...

应运: 

try:
    print(1 / 0)
except ZeroDivisionError as e:
    print('异常信息为:', e) # 异常信息为: division by zero

2.捕获所有异常

格式: 

捕获所有异常
try:
    ...代码...
    ...代码...
except:
    ...代码...
    ...代码...
或
try:
    ...代码...
    ...代码...
except Exception:
    ...代码...
    ...代码...

第一种格式:

try:
    s = [1]
    print(s[3])
except:
    print('程序出错') # 程序出错

第二种格式:

try:
    s = [1]
    print(s[3])
except Exception as e:
    print('程序出错',e) # 程序出错 list index out of range

3.try...else...

if...else...,在if中,它的作用是当条件不满足时执行的实行,在try...except...中也是如此,即如果没有捕获到异常,那么就执行else中的事情

try:
    print('开始了')
    s = [1]
    print(s[3])
except Exception as e:
    print('程序出错',e)
else:
    print('o(* ̄︶ ̄*)o')
print('结束了')
'''
输出以下内容:
开始了
程序出错 list index out of range
结束了
'''

注意:else一定要有except否则包语法错误

4.try...finally...

try...finally...语句用来表达这样的情况:

在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等。

说明:不管try语句有没有执行成功,都会执行finally当中的代码段

try:
    print('开始了')
    s = [1]
    print(s[3])
except Exception as e:
    print('程序出错',e)
finally:
    print('无论有没有异常都要执行')
print('程序结束...')
'''
输出以下内容:
开始了
程序出错 list index out of range
无论有没有异常都要执行
程序结束...

'''

5.raise抛出系统异常

你可以用raise语句来引发一个异常,异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类

raise 手动捕获异常
while True:
    try:
        name = input('请输出姓名:(不能小于三位)')
        if len(name) < 3:
            raise Exception('短了!')  # 手动抛出异常
        else:
            pwd = input('请输入密码:')
        print(name, pwd)
    except Exception as e:
        print(e)
'''
请输出姓名:(不能小于三位)zx
短了!
请输出姓名:(不能小于三位)z
短了!
请输出姓名:(不能小于三位)zxc
请输入密码:123
zxc 123
请输出姓名:(不能小于三位)

'''