Python异常处理:try...except语句

news2024/11/16 5:59:15

Python是一门非常灵活且易于学习的编程语言,在日常开发中被广泛应用。然而,由于各种原因,我们的代码可能会出现异常情况,例如输入错误、文件读写异常等等。Python异常处理是Python中重要的一部分,为了保证程序的稳定性和可靠性,我们需要使用异常处理来及时捕获,并以优雅的方式来处理这些异常。本教程将介绍如何处理 Python中的异常。

001314-16853767948533.jpg

1.使用 try/except 处理异常

在Python中,我们可以使用try…except语句来进行异常处理。try语句块中包含可能会导致异常的代码,如果有异常发生,则会跳转到相应的except语句块中进行处理。下面是一个简单的示例:

try:
    num = int(input("请输入一个整数:"))
    print("您输入的数字是:", num)
except:
    print("输入错误,请重新输入!")

在上述代码中,我们首先使用input函数获取用户输入的一个字符串,并通过int函数将其转换为整数。如果用户输入的不是整数,则会产生ValueError异常。当发生异常时,try 语句块中后续的代码将不再执行,而会跳转到相应的except语句块中进行处理。在本例中,我们使用print函数输出提示信息,告诉用户输入错误,请重新输入。

2.指定异常类型

除了简单的异常处理外,我们还可以根据不同的异常类型,采取不同的处理方式。例如,我们可以分别处理ValueErrorTypeError等异常:

try:
    num1 = int(input("请输入一个整数:"))
    num2 = int(input("请输入另一个整数:"))
    result = num1 / num2
    print("两数相除的结果是:", result)
except ValueError:
    print("输入错误,请输入整数!")
except ZeroDivisionError:
    print("除数不能为0!")
except:
    print("其他异常发生!")

在上述代码中,我们首先使用input函数获取用户输入的两个整数,然后计算它们的商。

如果其中有任意一个输入不是整数,则会产生ValueError异常;如果除数是0,则会产生ZeroDivisionError异常。当发生异常时,程序会跳转到对应的except语句块中进行处理。在本例中,我们根据不同的异常类型,输出不同的提示信息。

3.通用except语句

除了使用单独的except语句块来处理不同类型的异常外,我们还可以使用一个通用的except语句块来捕获所有异常:

try:
    file = open("test.txt", "r")
    content = file.read()
    print(content)
except Exception as e:
    print("发生异常:", e)
finally:
    file.close()

在上述代码中,我们首先尝试打开名为test.txt的文件,并读取其中的内容。如果文件不存在或无法读取,则会产生FileNotFoundError或IOError异常。 当发生异常时,我们使用一个通用的except语句块来捕获异常并输出异常信息。最后,我们使用finally语句块来关闭文件,保证资源得到释放。

4.主动抛出异常

除了上述几种常见的异常处理方式外,我们还可以使用raise语句来主动抛出异常。例如:

def divide(num1, num2):
    if num2 == 0:
        raise ZeroDivisionError("除数不能为0!")
    return num1 / num2

try:
    result = divide(10, 0)
    print("两数相除的结果是:", result)
except ZeroDivisionError as e:
    print(e)

在上述代码中,我们定义了一个divide函数来计算两个数的商。如果除数为0,则使用raise语句抛出ZeroDivisionError异常,并输出对应的提示信息。 当调用该函数时,如果发生异常,则会跳转到相应的except语句块中进行处理。

总之,在Python中使用异常处理能够提高程序的稳定性和可靠性,避免因为意外情况导致程序崩溃或错误。在编写代码时,我们应该尽可能地考虑到可能出现的异常情况,并使用try…except语句来捕获和处理这些异常。 同时,还需要注意一些常见的异常类型以及对应的处理方式,例如ValueErrorTypeErrorZeroDivisionError等。如果遇到无法处理的异常,我们可以通过raise语句来主动抛出异常,让程序跳转到相应的except语句块中进行处理。

需要注意的是,在使用try...except语句时,我们应该尽可能地缩小try语句块中的范围,只包含可能会产生异常的代码,而不是整个程序都放在try语句块中。这样能够提高代码的执行效率,并且也更容易定位和解决问题。

194109-150305646946b9.jpg

5.总结

最后,值得一提的是,在 Python 3.x 中,我们可以使用更为灵活和强大的with语句来代替try...finally语句块,实现资源的自动关闭。例如:

with open("test.txt", "r") as file:
    content = file.read()
    print(content)

在上述代码中,我们使用with语句打开名为test.txt的文件,并读取其中的内容。在with语句块执行完毕后,文件会自动关闭,避免了手动调用close()方法的繁琐操作,也避免了因忘记关闭文件而导致的资源泄漏等问题。 关于文件读写的详细教程,可以阅读我的个人博客:Poycode编程指南 上的文章: Python文件和IO操作:读写文本文件、读写二进制文件

总之,Python异常处理是编写稳定、可靠程序的重要组成部分。通过熟练掌握try...except语句的使用方法以及常见的异常类型和处理方式,我们可以让程序更加健壮和可靠,提高开发效率和质量。

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料

在这里插入图片描述

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
在这里插入图片描述

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

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

相关文章

IPv6地址介绍

当前我国的网络正在快速向IPv6升级中,从网络基础设施如运营商骨干网、城域网,到互联网服务商如各类云服务,以及各类终端设备厂商如手机、电脑、路由器、交换机等。 一、网络IP地址 IP地址是英文Internet Protocol的缩写,是网络之…

Fiddler 抓包高级进阶

Fiddler 抓包高级进阶 安装直接下载我附件提供的,中文版的,可以直接使用。如果不能使用就安装.NET 框架。 HTTPS配置工具》》选项: https 都配置上。 配置HTTS证书,然后动作》》 Trust Root Certificate 。 一路确认或者 是,就行了。

【C++】程序题( STL标准模板库)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

dbCAN碳水化合物酶基因数据库及run_dbCAN4工具安装配置及使用

dbCAN(碳水化合物酶基因数据库)是一个专门用于在基因组中预测碳水化合物酶基因的在线工具。它基于隐马尔可夫模型(HMM)和BLAST搜索,能够在蛋白质序列中识别和注释不同类型的碳水化合物酶基因,包括纤维素酶、…

Flutter App混淆加固、保护与优化原理

目录 引言 一、混淆原理 二、实现混淆 2.1、混淆Dart代码 2.2、混淆Android原生代码 三、优化应用程序包体积 3.1、移除未使用的资源 3.2、压缩图片资源 四、提高反编译难度 4.1、混淆字符串 代码加固 五、常见问题与解决方案 六、总结 引言 在移动应用程序开发中&…

【Vue】【uni-app】实现工单列表项详情页面

这次主要实现的是一个工单详情页面 从工单列表项中点击详情 跳转到工单详情页面&#xff0c;这个详情页面就是这次我们要实现的页面&#xff0c;并可以通过点击这个关闭按钮返回到工单列表页面 首先是在我们原有的工单列表页面的按钮增加一个点击跳转 <button size"m…

支付宝蚂蚁庄园2023年12月1日小课堂问题今天正确答案是什么?通常来说榴莲的气味越浓郁说明?为什么冬天容易手脚冰凉?

问题&#xff1a;通常来说&#xff0c;榴莲的气味越浓郁说明&#xff1f; 选项&#xff1a;A、越成熟 B、越生涩 答案&#xff1a;越成熟 解析&#xff1a;榴莲都会有独特的香味,一般情况下,香味越浓郁就说明榴莲的成熟度越高,它的果肉会越香甜,吃起来会更美味。 问题&#…

【React-Router】导航传参

1. searchParams 传参 // /page/Login/index.js import { Link, useNavigate } from react-router-dom const Login () > {const navigate useNavigate()return <div>登录页<button onClick{() > navigate(/article?id91&namejk)}>searchParams 传参…

11.22 作业 select实现TCP并发客户端/poll实现TCP并发服务器

#include <myhead.h> #define SERIP "192.168.115.162" #define SERPORT 8888 #define CLIIP "192.168.115.162" #define CLIPORT 6666 int main(int argc, const char *argv[]) {//创建客户端用于通信的套接字int cfd socket(AF_INET,SOCK_STREAM,…

数据通信——OSPF路由控制实验

实验需求 我们采用OSPF完成路由的控制&#xff0c;首先连接如下拓扑&#xff1a; 所有设备均属于area 0&#xff0c;网段及环回口配置如上图所示。 实验目的&#xff1a;R4和R1的环回口通信路径为R4——R2——R1若R2出现问题&#xff0c;自动切换到R3路径。 实验配置 1&am…

ChatGPT 改 Bug 能力,惊呆我了!

ChatGTP 是全球公认的最强的 AI 模型&#xff0c;能做的事情太多了。。 对于程序员来说&#xff0c;ChatGPT 可以自动生成代码、代码补全、代码分析、编程语言转换、写 SQL、写程序等等&#xff0c;下面我给大家先简单演示几个。 1、代码生成 ChatGPT 可以根据程序员输入的指…

磁盘配额Quota案例,针对组,用户设置宽限期限,限制值的报表

目的与账号&#xff1a; 1.设计专题&#xff0c;五个人一组&#xff0c;账号分别是myquota1-myquota5,密码&#xff1a;password&#xff0c;初始用户组myquotagrp,其他默认。脚本如下 增加执行权限&#xff0c;运行 2&#xff09;实践quota1&#xff0c;文件系统支持 只针对…

对话特斯拉北美车主:FSD什么水平?深度用户解密V11

作者 |Amy 编辑 |德新 近期中国四部委联合印发通知&#xff0c;部署开展智能网联汽车准入和上路通行试点工作&#xff0c;要求具备量产条件L3、L4 级别智能网联车在限定区域内开展上路试点&#xff0c;并且首次明确事故责任判定。 通知下发后&#xff0c;市场传闻&#xff1a…

STM32_11(SPI)

一、SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司开发的一种通用数据总线四根通信线&#xff1a;SCK&#xff08;Serial Clock&#xff09;、MOSI&#xff08;Master Output Slave Input&#xff09;、MISO&#xff08;Master Input Slav…

一个菜单两个二级路由的搭建

效果如下&#xff0c;而且这是最上方的菜单&#xff0c;需要进入以后重定向。 {path: /,name: HOME,component: ConsoleLayout, //这里也有router-viewmeta: {menu: false},redirect: {name: ManagerList},children: [{path: /rightsManage,name: RightsManage,component: () &…

21.Oracle的程序包(Package)

Oracle的程序包Package 一、Package的概述1、什么是Oracle11g的Package2、Package的作用是什么3、常见的系统内置Package 二、创建Package的相关语法1、Package的创建语法2、Package的删除3、具体案例4、Package的使用5、与Package相关的其他语法 三、常见内置程序包的使用1、…

什么是电子负载

电子负载也被称为电子负载器或电源模拟器用于模拟实际负载的设备&#xff0c;它能够吸收和消耗电能&#xff0c;就像真实的电子设备一样&#xff0c;电子负载的主要功能是测试电源、电池、发电机等电源设备的性能和可靠性。 电子负载的工作原理是通过内部的电力转换电路&#x…

西工大网络空间安全学院计算机系统基础实验一(14,15)

给大家强调一点&#xff0c;如果这门课你只是通过了&#xff0c;但是其实你并不懂其中的原理&#xff0c;千万不要害怕&#xff0c;不要胆怯&#xff0c;因为后面你还有很多很多的时间来回头巩固它&#xff0c;正所谓“君子报仇&#xff0c;十年不晚”。同样的道理&#xff0c;…

OSI七层参考模型及其协议和各层设备

OSI网络模型是开放系统互联&#xff08;Open Systems Interconnection&#xff09;参考模型&#xff0c;它是由国际标准化组织&#xff08;ISO&#xff09;制定的。这个模型将网络系统划分为七个层次&#xff0c;OSI网络模型的七层是&#xff1a;物理层、数据链路层、网络层、传…

牛客算法题 HJ99 自守数 golang实现

题目 HJ99 自守数 描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如&#xff1a;25^2 625&#xff0c;76^2 5776&#xff0c;9376^2 87909376。请求出n(包括n)以内的自守数的个数数据范围&#xff1a; 1 ≤ &#xfffd; ≤ 100001≤n≤10000 输入描述&…