python——异常

一、异常

异常是指在语法正确的前提下,程序运行时报错就是异常。 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

二、异常捕获

1.基本语法

语法格式 执行流程
try: …代码1…代码2… …代码3… except 异常类型: …处理异常代码… 程序从上往下执行,先执行try中 的代码,如果代码1报错,则不会 执行代码2和3,执行执行 exception中的异常代码。 如果try中没有报错,则不执行 except中的代码
try:
    print("程序开始")
    print(1/0)
    print("程序结束")
except ZeroDivisionError:
    print("程序有错")

结果:

程序开始
程序有错
  1. 捕获多个异常 如果一段代码中可能会触发多个异常,我们可以写一个try多个except来捕获多个异常。
try:
    a=[1,2]
    print(1/0)
    print(a[3])
except ZeroDivisionError:
    print("被除数不能为零")
except IndexError:
    print("索引超出范围")

结果:

被除数不能为零
  1. 捕获所有异常
a=[1,3,4,5,6,7,88]
b=iter(a)
while True:
    try:
        print(next(b))
    except StopIteration as e:
        print(e)
        break

结果:

1
3
4
5
6
7
88
  1. 获取异常信息描述
class A:
    pass
x=10
print(A,x)

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

结果:

<class '__main__.A'> 10
'age'
  1. else格式
try:
    print("haha")
    print(1/0.3)
except Exception:
    print("捕获到了异常")
else:
    print("没有发生异常")

结果:

haha
3.3333333333333335
没有发生异常
  1. try…finally格式
a=[1,2]
try:
    print("x")
    print("y")
    print(a[3])
    print(2/0)
except:
     print(2)
else:
    print(3)
finally:
    print("无论异常产生与否都要执行")

结果:

x
y
2
无论异常产生与否都要执行

三、触发异常 用户可以根据业务逻辑手动的抛出异常。并且用户可以根据需求来抛出系统异常(python已 经定义好的异常)和用户自定义的异常。

  1. 抛出系统异常
格式 描述
raise 异常类型(‘描述信息’) 当程序执行到raise是,会自动的 触发异常,让程序结束
while True:
    name=input("请输入姓名,不能少于三个字")
    try:
        if len(name)<3:
            raise Exception("姓名太少,请重新输入")
        else:
            pwd=input("请输入密码")
            print(name,pwd)
    except Exception as e:
        print(e)

结果:

请输入姓名,不能少于三个字333
请输入密码222
333 222
请输入姓名,不能少于三个字
  1. 抛出自定义异常
    当程序中的异常类型不满足时,我们可以自定义类型异常
class MyException(Exception):

    def __init__(self,lenght,atlast):
        self.lenght=lenght
        self.atlast=atlast
    def __str__(self):
        return "您输入的长度是{},至少输入的长度是{}".format(self.lenght,self.atlast)

msg=input("请输入长度大于5")
try:
    if len(msg)<5:
        raise  MyException(len(msg),5)
except MyException as e:
    print(e)

结果:

请输入长度大于52
您输入的长度是1,至少输入的长度是5
发布了37 篇原创文章 · 获赞 49 · 访问量 4077
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章