• Python学习记录 异常处理


    2022.08.23 DAY39

    异常
    • 异常就是不正常,当python检测到一个错误时,解释器就无法继续执行下去了,反而出现了一些错误的提示,这就是所谓的异常。

    • 解决方案

      • 加条件 if-else 增加相关的容错处理

      • 异常处理方案

          try:
              可能出现问题的代码。
          except:
              如果出现问题,会执行改代码块。
        
        • 1
        • 2
        • 3
        • 4
    • 多个异常处理

        try:
            ---
        excepr 异常1:
            ---
        excepr 异常2:
            ---
        excepr 异常3:
            ---
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    代码示例:

    a = input("请输入被除数:")
    b = input("请输入除数:")
    
    try:
        a = int(a)
        b = int(b)
        c = a / b
        print('商为:%g'%c)
    except ValueError:
        print('数据类型有误')
    except ZeroDivisionError:
        print('除数不能为0')
    except Exception:
        print('其他异常')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    运行结果:

    请输入被除数:6
    请输入除数:0
    除数不能为0
    
    • 1
    • 2
    • 3
    try-except-else-finally
    try:
        ---
    except 异常 as 变量:
        ---
    else:
        没有异常执行的代码
    finally:
        最终一定要执行的代码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    测试代码:

    def test2():
        try:
            # 打开文件
            file = open('TestFile.txt', 'w', encoding='utf-8')
            print('文件打开成功')
            # 文件写入 write只能将字符串数据写入到文件
            file.write('Hello World...')
            # file.write([1, 2, 3])  # 报错
        except Exception as e:
            print(e.args)
        else:
            print('文件写入完毕')
        finally:
            # 文件关闭
            file.close()
            print('关闭文件,谢谢试用')
    
    test2()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    异常处理抛出自定义异常

    测试代码:

    # 抛出异常 raise 异常对象
    # 定义一个异常类
    class GenderException(Exception):
        def __init__(self):
            super().__init__()
            self.errMsg = '性别只能设置成男或者女'
    
    class Student():
        def __init__(self, name, gender):
            self.name = name
            self.setGender(gender)
    
        #设置性别
        def setGender(self, gender):
            if gender == '男' or gender == '女':
                self.__gender = gender
            else:
                # 抛出异常 性别异常
                raise GenderException()
    
        def getGender(self):
            return self.__gender
        def showInfo(self):
            print("我叫:%s, 性别:%s"%(self.name, self.__gender))
    
    
    if __name__ == '__main__':
        stu = Student('学生1', '男')
        try:
            stu.setGender('不男不女')
        except Exception as e:
            print(type(e))
            print(e.args)
            print(e.errMsg)
        stu.showInfo()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    C语言数据结构---时间复杂度、空间复杂度
    Ceph存储池管理
    springboot整合其它项目
    微信小程序上传文件或图片(包含base64)至七牛云
    电视连续剧 ffmpeg 批量去掉片头片尾
    WorkPlus移动数字化平台,助力企业全面掌控业务和生态
    J2EE——自定义MVC框架的CRUD操作
    YOLOv7改进:极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点 | 华为诺亚2023
    重建大师创建缓存目录失败,密集匹配失败是什么原因呢
    Android WiFi ip显示
  • 原文地址:https://blog.csdn.net/Code_peasant/article/details/126504895