• L7-2 异常处理


    一、课堂导入

    上节课我们学习了文件操作的文本处理,知晓了如何打开、关闭文件,本节课我们将学习处理操作中的问题。

    二、异常处理

    我们在编写程序时,有时候会踩很多的坑,我们时长是在写bug与改bug的路上。为了减少bug的产生,本节课我们要开始学习制造bug后的修复操作。

    1.什么是异常

    异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下

    2.异常的种类

    # AttributeError:尝试访问的对象不存在,比如foo.x,但是foo没有属性x
    # IndexError:尝试访问的索引值超出系列范围,,比如当x只有三个元素,却试图访问x[5]
    # KeyError:试图访问字典里不存在的键
    # NameError:尝试要访问的变量不存在
    # SyntaxError:Python代码非法,代码不能编译(没有按照语法要求来写)
    # TypeError:传入对象类型与要求的不符合(对不同的数据类型进行操作出错)
    # ZeroDivisionError:除数不能为0,除0会报错
    # FileNotFoundError:使用文件,找不到文件

    3.处理异常

    主要分为三种方式:

     3.1 如果错误发生的条件是不可预知的,则需要用到try...except:在错误发生之后进行处理

      try-except语句检测try语句 块中的错误,让except语句 捕获异常并处理

    #基本语法为
    try:
        被检测的代码块
    except 异常类型:
        try中一旦检测到异常,就执行这个位置的逻辑
    #举例
    
    try:
      dic={"name":"Rita","age":17}
      del dic["sex"]
    except KeyError:
      print("所要删除的键不存在")

    3.2 try-finally 语句无论 是否发生异常都将 执行最后的代码

    # 基本语法
    try:
        被检测的代码块
    finally:
        try 中检测的异常
    
    try:
        fh=open("homework.txt","w")
        fh.write("我的作业写完了")
        sum=1+"1"
    finally:
        fh.close()
        print("Erro:没有找到文件或读取文件失败")

    3.3 try-except-else 如果有异常,执行except语句,如果没有异常执行else语句

    try:
        f=open("homework.txt","w",encoding="utf-8")
        f.write("我的作业可算写完了")
    except FileNotFoundError:
        print("Error:没有找到文件或读取文件失败")
    else:
        print("内容写入文件成功")
        f.close()

    三. 实践

    简单的除法计算器

    需求:程序要能处理无效的输入,例如当输入的除数是0的时候,提示除数不能为0。

    print("请输入两个数,让他门进行比较:")
    while True:
        first_num=int(input("请输入第一个数字:"))
        if first_num=="q":
            break
        second_num=int(input("请输入第二个数字:"))
        try:
            answer=int(first_num)/int(second_num)
        except ZeroDivisionError:
            print("除数不能为0")
        else:
            print(answer)

    四、总结

    # 1.一般情况下,在Python无法正常处理程序时就会发生一个异常。
    # 2.当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
    # 3.在Python中用try-except语句、try-finally语句、else语句处理异常。
  • 相关阅读:
    在阿里云Centos下LNMP环境搭建
    Thinkphp5.0整合个推例子
    在H5页面内通过地址调起高德地图实现导航
    模仿segmentfault 评论
    无限极分类中递归查找一个树结构
    文件缓存
    职业发展
    Codeigniter-实现权限认证
    mysql 数据备份
    依赖注入+控制反转
  • 原文地址:https://www.cnblogs.com/xiaoxiao-ya/p/12093667.html
Copyright © 2020-2023  润新知