Python学习记录 异常处理

2022.08.23 DAY39

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

  • 解决方案

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

    • 异常处理方案

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

      try:
          ---
      excepr 异常1:
          ---
      excepr 异常2:
          ---
      excepr 异常3:
          ---
    

代码示例:

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('其他异常')

运行结果:

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

测试代码:

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()
异常处理抛出自定义异常

测试代码:

# 抛出异常 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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值