python学习之异常/day11上午

错误和异常
语法正确的情况下报错叫异常
a=[1,2]
try:                    #执行try里的语句,直到出现错误以后才执行except里面的语句
                        #执行错误之前的语句也将执行,直到错误时才执行except里的语句
    print(a[0])
    print(a[3])
except IndexError as e: #IndexError是错误的类型,把IndexError赋给e
    print("下标越界",e)
print("到这里了")
"""
1
下标越界 list index out of range
到这里了
"""

try...except...用法
class A():
    pass
try:
    print(A.x)
except AttributeError as e:
    print("属性异常")

a={"name":"张三"}
try:
    print(a["age"])
except KeyError as z:
    print(z)

a=[1,2,3,4,5]
b=iter(a)
try:
    while True:
        print(next(b))
except StopIteration as e:
    print(e)

while True:
    try:
        print(next(b))
    except StopIteration as e:
        print(e)
        break

a=[2]
try:
    print(a[2])                   #第一次错误就被接收到,try中错误往下的代码不会再执行
    print(a[1]/0)
except (ZeroDivisionError,IndexError) as e:
    print(e)                      #list index out of range

a=[2]
try:
    print(a[0]/0)
    print(a[2])
except (ZeroDivisionError,IndexError) as e:
    print(e)                      #division by zero

try...except...else...用法
如何判断,没有出现错误,如下
try:
    print("11111111")
except (ZeroDivisionError,IndexError) as e:
    print("2222222222222")
else:
    print("我没错")
11111111
我没错

a=[1]
try:
    print(a[2])
    print("x")
    print(a[0]/0)
    print("y")
except:            #能捕获所有类型错误,但是只捕捉一次
    print("2")
else:
    print("无错误")
结果为  2

try...finally...的用法

try:
    print("9")
except:
    print("6")
else:
    print("没有错误")
finally:
    print("无论程序正确还是错误,我都会执行,没毛病")

try:
    f=open("a.txt","r+")
    f.write()
except:
    print("出事了")
finally:
    f.close()

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/88113277