• 12异常


      1 """
      2 异常
      3 """
      4 """
      5 1.异常基类:Exception
      6 2.常见的异常有:NameError 名称   SyntaxError 语法错误     IndexError 索引
      7                KeyError  键     FileNotFoundError 文件未找到   AttributeError 对象属性异常
      8                TypeError 类型
      9 """
     10 # print(a)  # NameError: name 'a' is not defined
     11 # print(2/0)  # ZeroDivisionError: division by zero
     12 # for i in range(5)  # SyntaxError: invalid syntax
     13 # list_1 = [1,2,3]
     14 # print(list_1[3])  # IndexError: list index out of range
     15 # dict_1 = {1:"a",2:"b"}
     16 # print(dict_1[3])  # KeyError: 3
     17 # fire = open("1111.txt","r")  # FileNotFoundError: [Errno 2] No such file or directory: '1111.txt'
     18 # class Car(object):
     19 #     def __init__(self,color):
     20 #         self.color = color
     21 #
     22 # car = Car("black")
     23 # print(car.color)
     24 # print(car.name)  # AttributeError: 'Car' object has no attribute 'name'
     25 # print(1+"1")  # TypeError: unsupported operand type(s) for +: 'int' and 'str'
     26 """
     27 捕获并处理异常:
     28 try-except 语句定义了监控异常的一段代码,并提供了处理异常的机制
     29 语法格式:
     30 try:
     31     代码块1
     32 except:
     33     异常处理代码
     34 """
     35 # 处理一个异常
     36 # try:
     37 #     # print(a)
     38 #     # content = open("111.txt")
     39 #     for i in "abc":
     40 #         print(i)
     41 # except:  # 当try语句中发生了异常,才会执行except
     42 #     print("捕获到了异常信息")
     43 #
     44 # print("程序执行结束")
     45 
     46 # 处理多个异常
     47 # try:
     48 #     num_1 = int(input("请输入一个数字"))
     49 #     num_2 = int(input("请输入另一个数字"))
     50 #     print(num_1/num_2)
     51 # # except ZeroDivisionError:
     52 # #     print("除数不能为0")
     53 # # except ValueError:
     54 # #     print("请输入正确的数字")
     55 # except (ZeroDivisionError, ValueError):  # 同时捕获多个异常,写在元组中
     56 #     print("捕获到了异常信息")
     57 
     58 """
     59 捕获描述信息:as
     60 当出现多种异常,为了区分不同的错误信息,可以使用as获取系统反馈的信息
     61 """
     62 """
     63 捕获所有异常,使用Exception
     64 Exception 是所有异常类的基类
     65 """
     66 """
     67 没有捕获到异常(else)
     68 如果try语句没有捕获到任何的错误信息,
     69 就不再执行任何except语句,而是会执行else语句。
     70 """
     71 # try:
     72 #     num_1 = int(input("请输入一个数字"))
     73 #     num_2 = int(input("请输入另一个数字"))
     74 #     print(num_1/num_2)
     75 # # # except ZeroDivisionError:
     76 # # #     print("除数不能为0")
     77 # # # except ValueError:
     78 # # #     print("请输入正确的数字")
     79 # # except (ZeroDivisionError, ValueError) as result:  # 将异常的描述信息赋值给result
     80 # #     print("捕获到了异常信息,%s" % result)
     81 # except Exception as result:
     82 #     print("捕获到了异常信息,%s" % result)
     83 """
     84 finally 终止行为
     85 在程序中,无论是否捕捉到异常,都必须要执行某件事情,
     86 例如关闭文件、释放锁等,这时可以提供finally语句处理。
     87 通常情况下,finally用于释放资源
     88 """
     89 # import time  # 导入时间模块
     90 # try:
     91 #     f = open("/untitled/b.txt","r")
     92 #     content = f.read()
     93 #     while True:
     94 #         if len(content) == 0:
     95 #             break
     96 #         time.sleep(5)
     97 #         print(content)
     98 #         break
     99 # finally:
    100 #     f.close()
    101 #     print("文件已被关闭")
    102 #     print(f.closed)
    103 
    104 """
    105 Python中异常处理完整语句:
    106 try:
    107     代码块
    108 except Exception as result:
    109     异常描述信息
    110 except:
    111     异常信息
    112 else:
    113     没有出现异常时执行的语句
    114 finally:
    115     最后执行的语句,有无异常都会执行,用于释放资源
    116 (如果这些语句都出现要按照上述顺序来写)
    117 (注意:else必须与except连用,没有except就不能有else)
    118 (finally可以只与try一起使用)
    119 """
    120 """
    121 抛出异常:raise
    122 使用raise语句能显示地触发异常,格式如下:
    123 1.raise 异常类名  --> 引发指定异常类的实例
    124 2.raise 异常类对象  --> 引发指定异常类的实例
    125 3.raise   --> 重新引发刚刚发生的异常
    126 4.raise 指定异常的描述信息
    127 5.异常引发异常:使用raise...from…可以在异常中抛出另外的异常
    128 """
    129 # 1.使用类名触发异常
    130 # num = int(input("请输入一个人数字"))
    131 # if num < 0:
    132 #     raise IndexError
    133 # print("12345")
    134 
    135 # 2.使用异常类的实例(对象)引发异常
    136 # a = IndexError()  # 创建了一个索引异常类的实例对象
    137 # num = int(input("请输入一个人数字"))
    138 # if num < 0:
    139 #     raise a
    140 # print("12345")
    141 
    142 # 3.raise 引发刚刚发生的异常,将异常向外传递
    143 # try:
    144 #     print(a)
    145 # except:
    146 #     print("程序出现异常")
    147 #     raise
    148 # print("123")
    149 
    150 # 4.raise 指定异常的描述信息
    151 # num = int(input("请输入一个人数字"))
    152 # if num < 0:
    153 #     raise IndexError("索引下标超出了范围")
    154 # print("12345")
    155 
    156 # 5.使用raise...from…可以在异常中抛出另外的异常
    157 # try:
    158 #     print(a)
    159 # except Exception as result:
    160 #     print("捕获到了异常%s" % result)
    161 #     raise IndexError ("下标超出范围") from result
    162 
    163 """
    164 assert语句又称作断言(判断完条件后不满足则发言),指的是期望用户满足指定的条件。
    165 当用户定义的约束条件不满足的时候,
    166 它会触发AssertionError异常,
    167 所以assert语句可以当做条件式的raise语句。
    168 
    169 语法格式:assert 逻辑表达式,data
    170 相当于:if not 逻辑表达式:
    171             raise AssertionError(data)
    172             
    173 assert 后面紧跟一个逻辑表达式,相当于条件。
    174 Data通常是一个字符串,当条件为false时作为异常的描述信息。
    175 """
    176 # age = int(input("请输入您的年龄"))
    177 # assert age >= 18,"您还不能进入网吧,因为年龄太小,回家学习去吧"
    178 
    179 # 等价于以下代码:
    180 # age = int(input("请输入您的年龄"))
    181 # if age < 18:
    182 #     raise AssertionError("您还不能进入网吧,因为年龄太小,回家学习去吧")
    183 
    184 # 求两个最大公约数
    185 # while True:
    186 #     try:
    187 #         num_1 = int(input())
    188 """
    189 自定义异常,继承自Exception的子类
    190 """
    191 # 自定义异常:用户密码,长度至少三位
    192 # class ShortInputError(Exception):  # 定义了一个基于Exception的异常类
    193 #     def __init__(self,len,shortLen):
    194 #         self.len = len
    195 #         self.shotLen = shortLen
    196 #
    197 # try:
    198 #     text = input("请输入密码,长度至少三位")
    199 #     if len(text) < 3:
    200 #         raise ShortInputError(len(text),3)  # 引发自定义的异常类并传入相对应的参数
    201 #     print("密码是",text)
    202 # except ShortInputError as result:
    203 #     print("程序运行错误!您的密码长度是%d,"
    204 #           "长度至少应该是%d位" % (len(text),3),result)
    205 
    206 # 自定义异常:年龄必须要大于0,否则报错
    207 # 方式1:
    208 # age = input("请输入您的年龄")
    209 #
    210 # class Age(Exception):
    211 #     def __init__(self,age):
    212 #         self.age = age
    213 #
    214 # try:
    215 #     text = int(input("请输入你的年龄"))
    216 #     if text > 0:
    217 #         raise ShortInputError(1)
    218 #     print("年龄大于0,")
    219 
    220 # age = int(input("请输入您的年龄"))
    221 # if age <= 0:
    222 #     raise AssertionError("您的年龄输入必须要大于等于0岁")
    223 
    224 
    225 # 方法2:assert
    226 # age = int(input("请输入您的年龄"))
    227 # assert age > 0,"年龄必须要大于0岁"
    228 # print(age)
    229 
    230 # 方法3:
    231 # class AgeNotZerro(Exception):
    232 #     def __init__(self,age):
    233 #         self.age = age
    234 #     def __str__(self):  # 对象的字符串定制显示,作为异常的描述信息返回
    235 #         return "年龄必须大于0岁"
    236 #
    237 # age = int(input("请输入您的年龄"))
    238 # if age < 0:
    239 #     raise AgeNotZerro(age)
    240 """
    241 with语句适用于对资源进行访问的场合,
    242 确保不管使用过程中是否发生异常都会
    243 执行必要的“清理”操作,释放资源。
    244 wich...as...环境安装器
    245 """
    246 # 打开文件,确保会关闭。方法1:
    247 # try:
    248 #     file = open("b.txt")
    249 #     content = file.read()
    250 #     print(content)
    251 # except Exception as result:
    252 #     print("捕获到异常",result)
    253 # finally:
    254 #     file.close()
    255 
    256 # 打开文件确保关闭,方法2:wich...as...
    257 # with open("b.txt") as file:
    258 #     content = file.read()
    259 #     print(content)
    260 #
    261 # print(file.closed)
    262 
    263 """
    264 课后练习题解析
    265 """
    266 # 处理多个异常
    267 # try:
    268 #     # print(a)
    269 #     1 + "1"
    270 # # except NameError:
    271 # #     print("捕获到异常,名称错误")
    272 # # except TypeError:
    273 # #     print("捕获到异常,类型错误")
    274 # # except (NameError,TypeError):  # 捕获多个异常,元组形式包裹
    275 # #     print("捕获到异常")
    276 # except (NameError,TypeError) as result:  # 捕获多个异常,并获取其描述信息
    277 #     print("捕获到异常",result)
    278 
    279 # raise NameError
    280 
    281 # age = 10
    282 # assert age >=18,"年龄大于等于18岁才能进入网吧"
    283 
    284 # try:
    285 #     print(a)
    286 # except:
    287 #     print("捕获到异常")
    288 #     raise
  • 相关阅读:
    mybatis中的#和$的区别
    error: 40
    SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星
    AtCoder Regular Contest 093 D
    AtCoder Regular Contest 092 D
    2018 蓝桥杯省赛 B 组模拟赛(五) 结果填空:藏宝图
    2018/3/22 美团在线笔试 编程题
    2018/3/22美团在线笔试
    2018 蓝桥杯省赛 B 组模拟赛(一)青出于蓝胜于蓝
    心情小记
  • 原文地址:https://www.cnblogs.com/zh1127487137/p/12552867.html
Copyright © 2020-2023  润新知