异常处理

一、异常处理

"""
1、什么是异常
    异常是错误发生的信号,一旦程序出错就会产生一个异常
    如果该异常没有被处理,该异常就会被抛出来,程序的运行随即终止

    异常是由三部分组成
        1、具体哪一行代码抛出的异常
        2、异常的种类
            NameError:变量名没有定义过
            IndexError:索引不存在
                l=[11,22]
                l[100]
            KeyError
                d={"k1":11}
                d["k2"]

            AttributeError:对象属性不存在
                对象.属性

            ValueError:
                int("asdf")

            TypeError:
                "asdf"+1111

            ZeroDivisionError
                1/0
        3、异常的内容信息

2、为何要处理异常
    为了增强程序的健壮性

3、如何处理异常
    1、针对语法的错误:应该在程序运行前立即改正
    2、针对逻辑错误:
        2.1 如果逻辑错误发生的条件是可以预知的,应该if判断解决,预防异常
            age = input('>>: ').strip()
            if age.isdigit():
                age=int(age)
                if age > 18:
                    print('too big')
                elif age < 18:
                    print('too small')
                else:
                    print("got it")
            else:
                print('必须输入数字')
        2.2 如果逻辑错误发生的条件是不可预知的,那么异常一个会发生,考虑到程序的健壮性
            我们应该处理异常,做好补救措施
            try:
                代码块
            except 异常的类型:
                发生异常后要执行的代码

"""


# 例1
# try:
#     print("====>111")
#     print("====>222")
#     xxx
#     print("====>333")
# except AttributeError as e:
#     print(e)
#
# print('====>4')

# 例2
# try:
#     print("====>111")
#     print("====>222")
#     xxx
#     print("====>333")
# except NameError as e:
#     print(e)
#
# print('====>4')

# # 例3
# try:
#     print("====>111")
#     print("====>222")
#     # xxx
#     # l=[]
#     # l[0]
#     dic={}
#     dic["k1"]
#     print("====>333")
# except (NameError,IndexError) as e:
#     print("=---->",e)
# except KeyError as e:
#     print(e)
#
# print('====>4')

# # 例4
# try:
#     print("====>111")
#     print("====>222")
#     xxx=111
#     # l=[]
#     # l[0]
#     dic={}
#     # dic["k1"]
#     print("====>333")
# except (NameError,IndexError) as e:
#     print("=---->",e)
# except KeyError as e:
#     print(e)
# finally:
#     print("一定会运行")
# print('====>4')
# # print(xxx)


# # 例4
# try:
#     print("====>111")
#     print("====>222")
# finally:
#     print("一定会运行")
# print('====>4')
# # print(xxx)

# # 例5
# try:
#     print("====>111")
#     print("====>222")
#     # xxx
#     l=[]
#     # l[0]
#     dic={}
#     dic["k1"]
#     print("====>333")
# except Exception as e:
#     print("万能异常",e)
# print('====>4')

# 例6
# print('==>11')
# raise NameError("变量名未定义")
# print('==>222')


# class Animal:
#     def speak(self):
#         raise BaseException("小垃圾必须实现speak方法来覆盖")
#
#     def run(self):
#         raise BaseException("小垃圾必须实现run方法来覆盖")
#
#
# class Dog(Animal):
#     pass
#
# class Pig(Animal):
#     pass
#
#
# d=Dog()
# p=Pig()
#
# d.speak()
# d.run()

# p.speak()
# d.run()

# 例7
# class Interface(BaseException):
#     def __init__(self, msg, x, y, z):
#         self.msg = msg
#         self.x = x
#         self.y = y
#         self.z = z
#
#     def __str__(self):
#         return "<%s:%s:%s:%s>" % (self.msg,self.x,self.y,self.z)
#
#
# raise Interface("接口异常", 11, 22, 33)

# 例8:

print("====1")
print("====2")
print("====3")
salaries=[1.1,2.2]

# if len(salaries) != 3:
#     raise NameError
assert len(salaries) == 3

print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])
print(salaries[2])

 

---28---

posted @ 2020-08-12 22:20  1024bits  阅读(133)  评论(0编辑  收藏  举报