041.Python异常处理_初识异常

news2024/11/24 14:46:07

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈

分隔线

初识异常

    • 初识异常
      • 异常和错误的概念
        • 错误
        • 异常
      • 常见的系统异常
        • 常见异常
        • 系统异常类继承树
      • 如何解决异常

初识异常

异常和错误的概念

错误
  • 概念
    • 没法通过其他代码进行处理的问题,包括语法错误和逻辑错误
  • 语法错误
    • 比如:定义函数时,写成了dfe xxx()
    • 这种错误,可以直接通过IDE或者解释器给出的提示进行修改
  • 逻辑错误
    • 语法层面没有问题,仅仅是自己设计的逻辑出现问题
    • 比如:用户输入年龄,判定是否成年
      if age < 18:
          print('已经成年了')
      
    • 这种错误,IDE或者解释器无法检测出来,只有我们通过代码测试进行排除
异常
  • 概念
    • 多指程序在执行过程中,出现的位置错误,语法和逻辑都是正确的。可以通过其他代码进行处理修复
  • 示例1
    • 让用户输入年龄,判断是否成年
      age = input('请输入年龄:')
      if int(age) > 18:
          print('已经成年了')
      
    • 这段代码语法和逻辑都没有问题,但是如果用户输入一个abc,那么int(age)这里就会抛出异常
    • 那么,我们可以在进行int(age)这个操作之前加一些代码进行判断,判断是否是我们想要的数据类型,再进行转换,就可以避免这个报错
  • 示例2
    • 设计一个计算器的除法
      def devide(x, y):
          return x / y
      
    • 这段代码语法和逻辑也没有问题,但是如果用户给参数y传入一个0,那么在计算x / y的时候也会抛出异常
    • 当然,我们也可以在接收这个参数的时候加上一些代码进行判断,判断 y <> 0的时候才执行除法操作
  • 示例3
    • 列表或者字典,在使用过程中,出现索引或者key的错误
      l = ['a', 'b']
      
      print(l[3])
      
  • 这一系列的示例中,出现的异常,我们都可以通过增加一些其他代码进行处理修复

常见的系统异常

常见异常
  • 除零异常
    2 / 0
    
    # ZeroDivisionError —— ArithmeticError —— Exception —— BaseException
    
  • 名称异常
    print(name)
    
    # NameError —— Exception —— BaseException
    
  • 类型异常
    '1' + 2
    
    # TypeError —— Exception —— BaseException
    
  • 索引异常
    l = ['a', 'b']
    l[3]
    
    # IndexError —— LookupError —— Exception —— BaseException
    
  • 键异常
    dic = {'a':1, 'b':2}
    dic['c']
    
    # KeyError —— LookupError —— Exception —— BaseException
    
  • 值异常
    int('abc')
    
    # ValueError —— Exception —— BaseException
    
  • 属性异常
    name = '失心疯'
    name.xx
    
    # AttributeError —— Exception —— BaseException
    
  • 迭代器异常(停止异常)
    ite = iter([1, 2])
    next(ite)
    next(ite)
    next(ite)
    
    # StopIteration —— Exception —— BaseException
    
  • 文件未找到异常
    with open('./异常处理.txt', mode='r', encoding='utf-8') as f:
        f.read()
    
    # FileNotFoundError —— (OSError)WindowsError —— Exception —— BaseException
    
系统异常类继承树
  • 继承树
    # BaseException                 # 所有内建异常的基类
        # SystemExit                # 由sys.exit()函数引发,当它不处理时,Python解释器退出
        # KeyboardInterrupt         # 当用户点击中断键时引发
        # GeneratorExit             # 当调用一种generator的close()方法时引发
        # Exception                 # 所有内置的、非系统退出异常都是从该类派生的(所有自定义异常都应该继承自该类)
            # ArithmeticError
                # ZeroDivisionError
            # NameError
            # TypeError
            # LookupError
                # IndexError
                # KeyError
            # ValueError
            # AttributeError
            # StopIteration
            # WindowsError
                # FileNotFoundError
    
  • 在这里插入图片描述

如何解决异常

  • 系统一开始已经内置了一些特定的应用场景;当我们写代码的过程当中,一旦触发了这个场景,系统内部就会自动的向外界抛出这个问题,也就是我们所谓的异常
  • 如果我们不处理这些异常,程序就会被终止执行,软件崩溃
  • 解决方案
  • 1、预防
    • 措施:
      • 添加容错代码
    • 弊端:
      • 1、有些异常无法预防,如:NameError
      • 2、容错代码不属于业务逻辑,容错代码过多会造成代码混乱,主业务不清晰
  • 2、解决
    • 措施:
      • 异常捕获处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

共享门店会在未来新零售占据主角吗?

共享门店作为一种创新的商业模式&#xff0c;在未来新零售领域中可能会占据一定的角色&#xff0c;但具体是否会成为主角&#xff0c;还需要根据市场的发展和技术的进步来判断。 首先&#xff0c;共享门店模式通过资源共享、风险共担、客户共享和收益共享等方式&#xff0c;为…

手机大厂的自由窗口freeform功能基于aosp14/安卓14适配完成-千里马android framework实战开发

背景 hi&#xff0c;粉丝朋友们&#xff1a; 今年2023年已经块过去了&#xff0c;各个手机厂商已经开始适配aosp14&#xff0c;甚至有的是已经适配完成&#xff0c;明年市场就大部分手机出厂就都是android 14了。 近期有个马哥学员刚好求助马哥一个关于以前马哥课程里面自由窗…

2.初始化Server、Common工程

1.初始化项目结构 1.1 工程依赖关系 1.2 根pom.xml <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation…

vue3使用vue-router嵌套路由(多级路由)

文章目录 1、Vue3 嵌套路由2、项目结构3、编写相关页面代码3.1、编写route文件下 index.ts文件3.2、main.ts文件代码&#xff1a;3.3、App.vue文件代码&#xff1a;3.4、views文件夹下的Home文件夹下的index.vue文件代码&#xff1a;3.5、views文件夹下的Home文件夹下的Tigerhh…

Android通过listview实现输入框自定义提示栏(代替AutoCompleteTextView自动完成文本框)

效果图 背景 本人因为一些需求初次接触android&#xff0c;需要实现一个类似android自带的AutoCompleteTextView&#xff08;自动完成文本框&#xff09;&#xff0c;但和其不同的是通过后端接口直接筛选数据&#xff08;自己的分词处理规则&#xff09;&#xff0c;然后返回前…

【LeetCode刷题笔记(5)】【Python】【盛最多水的容器】【双指针】【中等】

文章目录 盛最多水的容器算法题描述示例示例 1示例 2 提示题意拆解 解决方案&#xff1a;【双指针】运行结果复杂度分析 结束语 盛最多水的容器 盛最多水的容器 算法题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (…

虚拟展会展览如何搭建,虚拟展会展览有哪些优势

引言&#xff1a; 随着科技的不断进步&#xff0c;虚拟展会展览正逐渐成为企业推广和交流的新方式。那么虚拟展会展览应该如何搭建&#xff0c;虚拟展会展览又能带来哪些好处呢&#xff1f; 一.什么是虚拟展会展览 虚拟展会展览是一种通过网络平台进行的展览&#xff0c;与传…

制作RK3568 ubuntu20.04桌面版镜像

平台 主控: RK3568 编译主机: Ubuntu 20.04 AMD64 目标版本: Ubuntu 20.04 概述 RK3568是极具性价比的高能国产“芯“ , 是Rockchip面向与AIOT和工业市场打造的一款高性能、低功耗、功能丰富的国产化应用处理器。采用四核64位Cortex-A55架构&#xff0c;主频高达2.0GHz&#x…

数据结构:图文详解 队列 | 循环队列 的各种操作(出队,入队,获取队列元素,判断队列状态)

目录 队列的概念 队列的数据结构 队列的实现 入队 出队 获取队头元素 获取队列长度 循环队列的概念 循环队列的数据结构 循环队列的实现 判断队列是否为空 判断队列是否已满 入队 出队 得到队头元素 得到队尾元素 队列的概念 队列&#xff08;Queue&#xff0…

如何在使用Docker快速部署StackEdit并实现公网访问本地编辑器远程办公

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器&#xff0c;在GitHub上拥有20.7k Star&#xff01;&#xff0c;它支持将Markdown笔记保…

简单好用的图像编辑:Pixelmator Pro直装中文 for Mac

在 Pixelmator Pro 中&#xff0c;您可以找到从亮度、对比度和曝光等基本颜色调整到多通道曲线和基于轮的颜色平衡等高级工具的所有内容。 自动增强照片。 许多最重要的调整可以自动应用&#xff0c;使用经过 2000 万张照片训练的机器学习算法。 完善每一个细节。 神奇地移除…

回收站数据恢复,分享3个可行方法!

“我真的太粗心啦&#xff01;本来想删除一些电脑里不重要的文件&#xff0c;但是不小心把一些很重要的文件一起删除了&#xff0c;这可怎么办呢&#xff1f;我应该通过什么方法找回这些文件呢&#xff1f;” 在使用电脑的过程中&#xff0c;误删文件是很多用户都无法避免的一件…

使用vs code开发microPython,消除库文件报错

使用vs code 写microPython代码的时候&#xff0c;总是遇到库文件报错&#xff0c;也就是类似machine之类的库下面会有波浪线&#xff0c;看起来很是别扭。 前几天在翻看树莓派pico的文档&#xff0c;发现里面提供了很好的方法。 安装vs code环境 $ sudo apt update $ sudo a…

如何在Windows系统上部署VisualSVN并实现远程访问管理界面【内网穿透】

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写&#xff0c;是一个开放源代码的版本控制系统…

eclipse安装astview插件

astview插件可以展示java源码经过词法、语法分析后生成的抽象语法树&#xff08;AST&#xff09;&#xff1a; 在eclipse中安装该插件&#xff0c;见官方&#xff1a;org.eclipse.jdt.astview - AST View | The Eclipse Foundation 我的eclipse版本2020-06&#xff0c;开始使用…

触想智能工业一体机在金属3D打印机上的应用

1、行业发展背景 3D打印又称“增材制造”&#xff0c;是一种以数字模型为基础&#xff0c;通过逐层堆叠将打印材料熔结固化为三维实体物件的先进制造技术。 随着航空航天、科研、医疗、汽车等精工领域的颠覆性发展&#xff0c;制造业对于高强度、高精度、轻量型、柔性化金属零件…

联合电子车载充配电单元全球量产

2023年12月&#xff0c;联合电子新一代车载充配电单元批量交付。该产品将应用于全球市场&#xff0c;可覆盖中国、欧洲、北美、日本的交流与直流充电通讯体系。 该车载充配电单元由车载充电机&#xff08;On-board Charger&#xff09;和高压直流转换器&#xff08;HV DCDC Co…

Python数据科学视频讲解:Python数据检索

3.3 Python数据检索 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解3.3节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#xff0c;包括数据科学应…

Linux服务器性能优化小结

文章目录 生产环境监测常见专业名词扫盲服务器平均负载服务器平均负载的定义如何判断平均负载值以及好坏情况如果依据平均负载来判断服务器当前状况系统平均负载和CPU使用率的区别 CPU上下文切换基本概念3种上下文切换进程上下文切换线程上下文切换中断上下文切换 查看上下文切…

Kafka消息延迟和时序性详解(文末送书)

目录 一、概括1.1 介绍 Kafka 消息延迟和时序性1.1.1 什么是 Kafka 消息延迟&#xff1f;1.1.2 为什么消息延迟很重要&#xff1f;1.1.3 什么是 Kafka 消息时序性&#xff1f;1.1.4 消息延迟和时序性的关系 1.2 延迟的来源1.2.1 Kafka 内部延迟 二、衡量和监控消息延迟2.1 延迟…