码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python学习 - 异常处理


    Python学习 - 语法入门:https://blog.csdn.net/wanzijy/article/details/125287855
    Python学习 - 数据类型:https://blog.csdn.net/wanzijy/article/details/125341568
    Python学习 - 流程控制:https://blog.csdn.net/wanzijy/article/details/125400906
    Python学习 - 运算符(操作符):https://blog.csdn.net/wanzijy/article/details/125387919
    Python学习 - 列表:https://blog.csdn.net/wanzijy/article/details/125457990
    Python学习 - 字典:https://blog.csdn.net/wanzijy/article/details/125567225
    Python学习 -元组和集合:https://blog.csdn.net/wanzijy/article/details/125577609
    Python学习 - 函数(1):https://blog.csdn.net/wanzijy/article/details/125669084
    Python学习 - 函数(2):https://blog.csdn.net/wanzijy/article/details/125739981
    Python学习 - 类与对象:https://blog.csdn.net/wanzijy/article/details/125826952
    Python学习 - 面向对象之封装:https://blog.csdn.net/wanzijy/article/details/125902925
    Python学习 - 面向对象之继承:https://blog.csdn.net/wanzijy/article/details/125963829
    Python学习 - 面向对象之多态:https://blog.csdn.net/wanzijy/article/details/127140632
    Python - 文件操作(1):https://blog.csdn.net/wanzijy/article/details/127099071
    Python - 文件操作(2):https://blog.csdn.net/wanzijy/article/details/127150189
    Python学习 - 垃圾回收、特殊方法和模块:https://blog.csdn.net/wanzijy/article/details/126202999
    Python学习 - 异常处理:https://blog.csdn.net/wanzijy/article/details/126803672

    1. 简介

    程序在运行过程当中,不可避免的出现一些错误,这些错误在程序中,称其为异常
    程序中一旦出现异常,会导致程序立即终止
    程序运行时出现异常,目的并不是让我们的程序直接终止,而是希望在出现异常时,可以编写代码来对异常进行处理

    try :
      #  代码块(可能出现错误的语句)
    except 类(异常类型): as 变量
      #  代码块(出现错误以后的处理方式)
    except 类(异常类型): as 变量
      #  代码块(出现错误以后的处理方式)
    …
    else :
      #  代码块(没出错时要执行的语句)
    finally:
      #  代码块(无论是否发生异常,都会执行的代码块)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    try 是必须的,可以没有 else 语句
    expect 和 finally 至少有一个
    可以将可能出错的代码放入到 try 语句,这样如果代码没有错误,则会正常执行;如果出现错误,则会执行 expect 子句中的代码,这样我们就可以通过代码来处理异常

    2. 异常传播

    当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再进行传播
    如果函数中没有对异常进行处理,则异常会继续向函数调用处传播
    异常传播,实际上就是异常对象抛给了调用处

    在这里插入图片描述

    当程序运行过程中出现异常以后,所有的异常信息都会被保存到一个专门的异常对象

    在 Python 中提供了多个异常对象,比如:ZeroDivisionError 类的对象专门用来表示除0的异常;NameError 类的对象专门用来处理变量错误的异常

    3. 异常对象

    如果 except 后不跟任何的内容,则此时它会捕获到所有的异常
    如果在 except 后跟着一个异常的类型,那么它只会捕获该类型的异常

    try:
        print(10/0)
    except NameError:
        print('出现NameError异常')
    except ZeroDivisionError:
        print('出现ZeroDivisionError异常')
    except:
        print('未知异常')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    exception 是所有异常的父类,所以如果 execpt 后跟的是 Execption,也会捕获到所有的异常
    可以在异常类后边跟着一个“as xx”,此时 “ xx ” 就是异常对象,通过 “ xx ” 可以看到异常的信息

    try:
        print(10/0)
    except NameError as e:
        print(e)
    except ZeroDivisionError as e:
        print(e)  #  division by zero
    except Exception as e:
        print(e)
    finally:
        print('!!!!')  #  一定会执行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4. 自定义异常

    raise 语句用来抛出异常
    raise 语句后需要跟一个异常类或者异常的实例

    def add(a, b):
        if(a < 0 or b < 0):
            raise Exception
    
        r = a + b
        return r
    
    print(add(-123, 456))  #  会抛出异常
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    也可以加上提示的语句

    def add(a, b):
        if(a < 0 or b < 0):
            raise Exception('出错啦')
    
        r = a + b
        return r
    
    print(add(-123, 456))  #  抛出异常的同时,出现上述的提示信息:“Exception: 出错啦”
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    也可以自定义异常类,只需要创建一个类继承 Execption 即可。可以在类中写自己的方法,但一般不需要

    def add(a, b):
        if(a < 0 or b < 0):
            raise Exception('出错啦')
    
        r = a + b
        return r
    
    print(add(-123, 456))  #  抛出异常的同时,出现上述的提示信息:“Exception: 出错啦”
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    文件上传_白名单、内容校验、竞争上传
    Twain的学习记录和基于Qt的相关开源项目详解
    Day04-Dockerfile与案例
    04 Spring MVC 源码总结 - 启动流程
    【MySQL】DDL因Waiting for table metadata lock卡住
    sketch设计不得不知道的五个高级功能
    k8s快速入门教程-----3 kubernetes架构
    vue2.x的一些知识点总结
    外包干了一个月,技术明显进步。。。。。
    RemObjects Elements 12.0 Crack
  • 原文地址:https://blog.csdn.net/wanzijy/article/details/126803672
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号