11-Python基础编程之错误和异常

Python基础编程之错误和异常

  • 概念
    • 错误
    • 异常
  • 常见的系统异常
  • 异常的解决
    • 预防
    • 捕捉处理异常
    • with语句
  • 手动抛出异常
  • 自定义异常

概念

错误

可以通过代码进行修复;
在这里插入图片描述

异常

需要提前考虑,设定限制条件;不能通过代码进行修复;
在这里插入图片描述

常见的系统异常

  1. 除零异常:ZeroDivisionError

  2. 名称异常:NameError

  3. 类型异常

  4. 索引异常

  5. 键异常

  6. 值异常

  7. 属性异常

  8. 迭代器异常
    在这里插入图片描述

  9. 系统异常类继承树
    在这里插入图片描述

异常的解决

系统一开始已经内置了一些特定的应用场景:当我们写代码的过程当中,一旦触发了这个场景,系统内部就会自动的向外界抛出这个问题,也就是我们所谓的异常——则程序被终止执行,软件的崩溃。

预防

添加容错代码;
但弊端是,容错代码不属于我们主要的业务逻辑:如果容错代码过多,会造成代码混乱,主业务不清晰。

def divide(x,y):if y != 0:return xprint("除数不能为0,请仔细检査")return 0print(divide(1, 0))

输出:

除数不能为0,请仔细检査
0

捕捉处理异常

在这里插入图片描述

# 之后执行第一个异常
try:1/0print(name)
except ZeroDivisionError as ze:print("xxx", ze)
except NameError as ne:print("名称错误", ne)
else:print("123")
finally:print("最后执行的内容,到时候,不管是否会出现异常,都会执行的语句")

输出:

xxx division by zero
最后执行的内容,到时候,不管是否会出现异常,都会执行的语句

# 或写成元组的形式
try:# 1/0print(name)
except (ZeroDivisionError,NameError) as z:print("xxx", z)
else:print("123")
finally:print("最后执行的内容,到时候,不管是否会出现异常,都会执行的语句")

输出:

xxx name ‘name’ is not defined
最后执行的内容,到时候,不管是否会出现异常,都会执行的语句

# 当不知道是什么异常时,写一个Exception即可
try:1/0print(name)
except Exception as ze:print("xxx", ze)
else:print("123")
finally:print("最后执行的内容,到时候,不管是否会出现异常,都会执行的语句")

输出:

xxx division by zero
最后执行的内容,到时候,不管是否会出现异常,都会执行的语句

with语句

不管出现了什么异常,最终都要执行一些清理操作,适用于执行某一段代码A之前,进行预处理,执行代码A结束后,进行清理操作。
在这里插入图片描述

在这里插入图片描述

with open("xx. jpg",'r')as f:f.readlines()
# 虽然会报错,但是他一定执行了fileclose这个操作,即:
finally:print("xxxx")f. close()

@contextlib.contextmanager:使用装饰器,让一个生成器变成一个"上下文管理器”

# 利用功能包将生成器变为上下文处理器
import contextlib@contextlib.contextmanager
def ze():try:yieldexcept ZeroDivisionError as e:print("error:",e)
x=1
y=0
with ze():x/y

输出:

error: division by zero

手动抛出异常

通过 raise 语句直接抛出相关类型的异常(但必须是BaseException类里的异常)。
自己设计异常模块:

def set_age(age):if age<=0 or age > 200:# print("值错误”)raise ValueError("值错误")else:print("给张三的年龄设置为", age)set_age(-18)

输出:
在这里插入图片描述

自定义异常

class LessZero(Exception):def init (self, msg):self.msg = msgpassdef set_age(age):if age<=0 or age > 200:# print("值错误”)raise LessZero("小于0,错误")else:print("给张三的年龄设置为", age)set_age(-18)

输出:
可以发现是我们设计的自定义异常类型
在这里插入图片描述
若要解决报错,将捕获的异常类型改为我们设置的即可:

class LessZero(Exception):def init (self, msg):self.msg = msgpassdef set_age(age):if age<=0 or age > 200:# print("值错误”)raise LessZero("小于0,错误")else:print("给张三的年龄设置为", age)# set_age(-18)
try:set_age(-18)
except LessZero as e:print("x", e)

输出:

x 小于0,错误

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

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

相关文章

鸿蒙开发融云demo发送图片消息

鸿蒙开发融云demo发送图片消息 融云鸿蒙版是不带UI的&#xff0c;得自己一步步搭建。 这次讲如何发送图片消息&#xff0c;选择图片&#xff0c;显示图片消息。 还是有点难度的&#xff0c;好好看&#xff0c;好好学。 一、思路&#xff1a; 选择图片用&#xff1a;photoVie…

十三、检索增强生成RAG(原理和使用建议)

RAG(Retrieval-Augmented Generation)的工作原理 RAG是一种将信息检索与文本生成结合的模型,它通过以下步骤实现其工作原理: 1. 输入处理 用户提出的问题或请求被输入到系统中。这些输入通常是自然语言文本。 2. 信息检索 在输入被处理后,RAG系统执行以下操作: 检索…

Linux工具(yum/apt,vim)

yum(或apt) Linux中常见的软件的安装方式 : 1. yum/apt 2. rpm 安装包安装 3. 源码安装 yum/apt相当于手机中的各种应用管家 vim指令 vim是一个多模式的编辑器,只用于写代码 刚进入vim默认是命令模式 想要在vim中写代码,必须要进入插入模式 想要退出vim首先必须进入底行…

朴素贝叶斯 (Naive Bayes) 和三种常见变体介绍

朴素贝叶斯模型是一类基于贝叶斯定理的概率分类算法&#xff0c;常用于文本分类、垃圾邮件过滤等任务。以下是 朴素贝叶斯 (Naive Bayes) 及其三种常见变体的详细介绍&#xff0c;包括 高斯朴素贝叶斯 (Gaussian Naive Bayes)、多项式朴素贝叶斯 (Multinomial Naive Bayes) 和 …

Java设计模式之代理模式(一)

什么是代理&#xff1f;可以理解为其他对象提供一种代理以控制对这个对象的访问。 举个例子&#xff0c;生活中的外卖平台&#xff0c;店铺是制作外卖的&#xff0c;然后放到平台上售卖。这里的店铺就是真实角色&#xff0c;为了能够让店铺不用担心销售等问题&#xff0c;从而…

搜索引擎语法大全(Google、bing、baidu)

搜索引擎语法大全 搜索引擎语法通常指的是在搜索引擎中使用特定的运算符和语法来优化搜索结果。 提高搜索精度&#xff1a;使用特定的语法可以帮助用户更精确地找到相关信息&#xff0c;避免无关结果。例如&#xff0c;通过使用引号搜索确切短语&#xff0c;可以确保搜索结果包…

PySpark Standalone 集群部署教程

目录 1. 环境准备 1.1 配置免密登录 2. 下载并配置Spark 3. 配置Spark集群 3.1 配置spark-env.sh 3.2 配置spark-defaults.conf 3.3 设置Master和Worker节点 3.4 设配置log4j.properties 3.5 同步到所有Worker节点 4. 启动Spark Standalone集群 4.1 启动Master节点 …

各类素材网站下载主题源码 CeoDocs v3.6 开心版

WordPress付费办公素材下载主题 – 各类素材网站下载主题 CeoDocs_v3.6_开心版CeoDocs主题是一款轻量级、 且简洁大气、付费素材下载类型主题&#xff0c;定位于办公素材行业&#xff0c;当然也适用于办公文档、PPT模板、设计素材、 图片素材、音效素材、视频素材各类素材网站…

【H2O2|全栈】JS进阶知识(三)jQuery(3)

目录 前言 开篇语 准备工作 $ 拷贝 浅拷贝和深拷贝 节点拷贝 $ 正则表达式 概念 创建 正则校验 匹配条件 边界符 范围匹配 量词 值类型 字符串正则匹配替换 $ 遍历 结束语 前言 开篇语 本系列博客主要分享JavaScript的进阶语法知识&#xff0c;本期为第三期…

flask+celery处理异步任务

celery是一个强大的分布式任务队列&#xff0c;在这里我们介绍一下它最基本的处理异步任务的功能&#xff0c;包含以下几个&#xff1a; 创建Celery实例 创建一个异步任务 查询异步任务的信息 取消异步任务 使用的环境是flask3.0Celery5.4 1. 创建Celery实例 celery通过…

巨好看的登录注册界面源码

展示效果 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevic…

Redis-发布/订阅交互模式

文章目录 一、消息代理介绍二、Redis中客户端、服务器之间的交互模式介绍三、Redis发布/订阅交互模式的操作 一、消息代理介绍 “消息代理”&#xff08;Message Broker&#xff09;是一种软件组件&#xff0c;它在不同的应用程序之间传递消息。在Redis的上下文中&#xff0c;…

利用Kubernetes原生特性实现简单的灰度发布和蓝绿发布

部分借鉴地址: https://support.huaweicloud.com/intl/zh-cn/bestpractice-cce/cce_bestpractice_10002.html 1.原理介绍 用户通常使用无状态负载 Deployment、有状态负载 StatefulSet等Kubernetes对象来部署业务&#xff0c;每个工作负载管理一组Pod。以Deployment为例&#x…

SpringBoot集成Shiro+Jwt+Redis

概述 首先需要知道为什么使用 ShiroJwtRedis 进行登录认证和权限控制。 1. 为什么用Shiro&#xff1f; 主要用的是 shiro 里面的登录认证和权限控制功能。 2. 为什么用Jwt&#xff1f; Shiro 默认的 Session 机制来帮助实现权限管理&#xff0c;用于维护用户的状态信息。而 …

Docker Compose --- 管理多容器应用

用于定义和运行多容器 Docker 应用程序。通过 Compose&#xff0c;用户可以使用 YAML 文件来配置应用程序的服务、网络和卷等资源 简化多容器的管理和部署过程 以下compose.yaml示例展示如何部署两个服务WordPress 和 MySQL的环境 version: 3.8 # 指定 Docker Compose 文件的…

18.04Ubuntu遇到Unable to locate package

解决办法&#xff1a; 要先升级你的apt Sudo apt-get update

Django ORM详解:外键使用(外键逻辑关联)与查询优化

Django数据库迁移 # 创建迁移 python manage.py makemigrations your_app_name # 应用迁移 python manage.py migrate # 查看迁移状态 python manage.py showmigrations # 回滚迁移 python manage.py migrate your_app_name 0001 # 修改表后,删除迁移记录和表删除迁移记录后重…

redis做缓存,mysql的数据怎么与redis进行同步(双写一致性)

基于业务做选择,强一致性和允许延迟再加消息队列 强一致性:当修改了数据库的数据同时更新缓存的数据,缓存和数据库的数据保持一致 读操作:缓存命中,直接返回数据,缓存没有命中,查询数据库,写入缓存,设定过期时间 写操作:延迟双删 :先删除缓存,修改数据库,等待延迟(数据库主从节…

《安全基石:等保测评的全方位解读》

在数字化转型的浪潮中&#xff0c;网络安全已成为企业生存与发展的核心议题。等保测评&#xff0c;作为我国网络安全等级保护制度的重要组成部分&#xff0c;不仅是企业安全的基石&#xff0c;更是推动企业高质量发展的关键。本文将全面解读等保测评的内涵、作用及其对企业的深…

(五)Spark大数据开发实战:灵活运用PySpark常用DataFrame API

目录 一、PySpark 二、数据介绍 三、PySpark大数据开发实战 1、数据文件上传HDFS 2、导入模块及数据 3、数据统计与分析 ①、计算演员参演电影数 ②、依次罗列电影番位前十的演员 ③、按照番位计算演员参演电影数 ④、求每位演员所有参演电影中的最早、最晚上映时间及…