Python 基础:异常

目录

  • 一、异常概念
  • 二、处理异常
    • 2.1 抛出异常
    • 2.2 使用 try-except 代码块
    • 2.3 使用 try-except-else 代码块
    • 2.4 静默失败
  • 三、总结

遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步!
在这里插入图片描述
本文参考:《Python编程:从入门到实践(第2版)》

一、异常概念

每当发生错误时,Python 都会创建一个异常对象
如果我们编写了处理该异常的代码,程序将继续运行;
如果未对异常进行处理,程序将停止并显示 traceback,其中包含有关异常的报告。

异常是使用 try-except 代码块处理的。try-except 代码块让 Python 执行指定的操作,同时告诉 Python 发生异常时怎么办。使用 try-except 代码块时,即便出现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的 traceback。

二、处理异常

2.1 抛出异常

我们知道不能用数除以 0 0 0,但我们仍然这样做会发生什么呢?

print(5/0)

运行后这里我们看到一个 traceback:
在这里插入图片描述

这里指出的错误 ZeroDivisionError 是个异常对象

在这种情况下,Python 将停止运行程序,并指出引发了哪种异常,而我们可根据这些信息对程序进行修改。这样,如果再次发生此类错误,我们就有备无患了。

2.2 使用 try-except 代码块

我们可以将错误的代码行放在 try 代码片中。
如果这个代码块运行起来没有问题,Python 将跳过 except 代码块;
如果出现问题,Python 将查找与之匹配except 代码块并运行其中的代码。

try:
    print(5/0)
except ZeroDivisionError:
    print("You can't divide by zero!")

运行结果为:
在这里插入图片描述
这个结果是我们所容易接受的😊

2.3 使用 try-except-else 代码块

如果 try 代码块抛出异常,即出现问题是,会到 except 代码块中寻找对应的处理,而跳过 else 代码块;

try:
    answer = 5/0  # 会出现问题
except ZeroDivisionError:
    print("You can't divide by zero!")
else:
    print(answer)

执行结果为:
在这里插入图片描述

如果 try 代码块执行正确,没有出现问题,则会执行 else 代码块,而跳过 except 代码块。

try:
    answer = 5/2  # 这里我们修改正确
except ZeroDivisionError:
    print("You can't divide by zero!")
else:
    print(answer)

执行结果为:
在这里插入图片描述

2.4 静默失败

Python 有一个 pass 语句,可用于让 Pytho n在代码块中什么都不要做:

try:
    answer = 5/0
except ZeroDivisionError:
    pass  # 什么都不做
else:
    print(answer)

执行后我们发现什么都没有输出。

三、总结

  • 异常是程序运行时可能遇到的非预期情况,如除以零或文件未找到等。
  • 使用 try-except 代码块可以捕获并处理这些异常,防止程序因错误而中断
  • try-except-else 代码块则进一步允许在无异常发生时执行特定代码
  • 静默失败是指程序在遇到错误时不显示任何错误信息,继续执行。
  • 合理使用异常处理机制,可以提高程序的健壮性和用户体验。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记一次某单位的内网渗透测试

0x01 web打点 访问漏洞url:http://www.xx.xx.com进入某医疗系统 使用越权加文件上传拿到shell 0x02 内网渗透 192.168.xx.x 管理员 通过哥斯拉上线msf 上线后进行信息收集: 网卡信息、补丁信息、杀毒进程、用户在线情况、是否存在域、翻文件查找数据库密码、浏览器保存密码…

数据结构和算法之复杂度比较

数据结构和算法之复杂度比较 参考如下网址:https://www.bigocheatsheet.com/ 方便快速查询 1. 复杂度比较 2. 常见数据结构复杂度 3. 常见算法复杂度

强化学习和Q-Learning的综合研究

目录 一、说明 二、什么是强化学习? 三、监督学习、无监督学习和强化学习之间的区别。 四、强化学习中使用的术语。 五、强化学习中的智能体-环境交互:一个迷宫示例。 六、贝尔曼方程。 七、马尔可夫决策过程 (MDP) 八、马尔可夫决…

活动 | 华院计算受邀参加同心知联汇,走进“模速空间”

6月17日,由市知联会先导产业专委会、市知联会经济与金融专委会、市经信系统知联会、上海市人工智能行业协会主办,上海创智合力信息科技有限公司、上海大模型生态发展有限公司承办的同心知联汇,走进“模速空间”活动在上海大模型创新生态社区成…

SQLite 3 优化批量数据存储操作---事务transaction机制

0、事务操作 事务的目的是为了保证数据的一致性和完整性。 事务(Transaction)具有以下四个标准属性,通常根据首字母缩写为 ACID: 原子性(Atomicity):确保工作单位内的所有操作都成功完成&…

wps要会员才能把pdf分开,这不纯属智商税吗

我有一个文档 然后 我给你们写好了一个代码 from PyPDF2 import PdfReader, PdfWriterdef split_pdf(file_path, ranges, output_names):# Open the input PDF filewith open(file_path, rb) as pdf_file:reader = PdfReader(pdf_file)total_pages = len(reader.pages)if len…

Day14—基于Langchain-chatchat搭建本地智能

一、基于Langchain-chatchat搭建本地智能 知识问答系统 1、项目介绍 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知…

vue3 antdv Select 实现输入关键词,通过服务器去查询数据,并显示到表格中的实现思路。

实现思路: 1)输入关键词,通过Select的查询事件(onSearch)来到服务器查询数据。 2)根据查询到的数据显示到表格中,然后通过表格的(cellClickEvent)事件来选择相关的用户…

大润发超市购物卡怎么用?

收到大润发超市的礼品卡以后,我才发现,最近的大润发也得十来公里 为了100块的大润发打车也太不划算了 叫外送也不在配送范围内 最后没办法,在收卡云上出掉了,还好最近价格不错,也不亏,收卡云的到账速度也…

关于圆的方程

关于圆的方程 flyfish 几何定义 圆是平面上所有到一个固定点(圆心)距离相等的点的集合。 解析几何描述 设圆心位于点 ( h , k ) (h, k) (h,k),半径为 r r r,那么对于圆上的任意一点 ( x , y ) (x, y) (x,y),它…

HTML播放flv

页面效果&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

第 18章 安全架构设计理论与实践

安全架构是架构面向安全性方向上的一种细分&#xff0c;可关注三个安全方面&#xff0c;即产品安全架构、安全技术体系架构和审计架构&#xff0c;这三个方面可组成三道安全防线。本章主要分析安全威胁、介绍安全模型&#xff0c;在此基础上&#xff0c;就系统、信息、网络和数…

Matlab数学建模实战应用:案例4 - 图像处理

目录 前言 一、图像处理基础 二、Matlab图像处理工具箱 三、案例&#xff1a;图像锐化、去噪和分割 步骤 1&#xff1a;读取和显示图像 步骤 2&#xff1a;图像锐化 步骤 3&#xff1a;图像去噪 步骤 4&#xff1a;图像分割 完整代码示例 四、实际应用 实例总结 总…

板凳----Linux/Unix 系统编程手册 25章 进程的终止

25.1 进程的终止&#xff1a;_exit()和exit() 440 1. _exit(int status)&#xff0c; status 定义了终止状态&#xff0c;父进程可调用 wait 获取。仅低8位可用&#xff0c;调用 _exit() 总是成功的。 2.程序一般不会调用 _exit()&#xff0c; 而是调用库函数 exit()。exit() …

手机携号转网接口查询与对接指南:技术开发者必备手册

在当今通信技术飞速发展的背景下&#xff0c;手机携号转网已成为推动电信市场竞争、保障用户权益的重要手段。而对于技术开发者而言&#xff0c;掌握手机携号转网接口的查询与对接方法&#xff0c;无疑是提升服务兼容性和用户满意度的关键。 比如如下应用场景&#xff1a; 1.…

docker容器网络与宿主机网络冲突的原因与解决方案

一、故障现象 在用docker-compos.yaml文件或者手动创建docker网络时&#xff0c;可能会出现新建的容器网络与宿主机网络冲突&#xff0c;导致SSH远程连接中断&#xff0c;并无法再用Xshell等远程连接工具连接宿主机。现象如下&#xff1a; [rootcontroller ~]# docker networ…

Web数据提取:Python中BeautifulSoup与htmltab的结合使用

1. 引言 Web数据提取&#xff0c;通常被称为Web Scraping或Web Crawling&#xff0c;是指从网页中自动提取信息的过程。这项技术在市场研究、数据分析、信息聚合等多个领域都有广泛的应用。Python社区提供了丰富的工具和库来支持这一技术&#xff0c;其中BeautifulSoup和htmlt…

家有老人小孩,室内灰尘危害大!资深家政教你选对除尘空气净化器

哈喽&#xff0c;各位亲爱的朋友们&#xff01;今天我们来聊聊每次大扫除时最让人头疼的问题——灰尘。你有没有发现&#xff0c;两天不打扫&#xff0c;桌子上就能积上一层灰&#xff1b;阳光一照&#xff0c;地板上的灰尘都在跳舞&#xff1b;整理被子的时候&#xff0c;空气…

卷积网络热图显示

【卷积神经网络可视化】之热度图可视化_visualizing heatmaps of class activation in an ima-CSDN博客 首先安装好对应的安装包&#xff0c;做这个的目的是为了可视化网络模型&#xff0c;查看每一个卷积之后得出的效果&#xff0c;可以通过改变网络模块来改进网络结构。这段…

基于JSP的二手交易平台网站

开头语&#xff1a; 你好&#xff0c;我是计算机专业的学长猫哥。如果你对二手交易平台感兴趣或有开发相关需求&#xff0c;欢迎联系我&#xff0c;我的联系方式见文末。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;ECLI…