Python基础教程:异常处理try...except语句

news2024/11/25 11:29:23

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

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语句块中。这样能够提高代码的执行效率,并且也更容易定位和解决问题。

python异常处理

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语句的使用方法以及常见的异常类型和处理方式,我们可以让程序更加健壮和可靠,提高开发效率和质量。

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

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

相关文章

用表格制作网页

利用表格制作网页 实验目标 该网页将利用设计页面的布局,制楚雄师院的页面简介。通过该种制作,我们可以体会到表格在布局设计中的实际运用,体会如何使用表格来控制页面中的元素对象,已达到自然,生动的配置构成元素…

Linux无法访问github解决方案【修改/etc/hosts文件,加上GitHub网站的IP地址】

ChatGPT神中神! 省流:修改/etc/hosts文件,加上GitHub网站的IP地址。 "Failed connect to github.com:443; 拒绝连接" 错误通常表示你的系统无法建立与GitHub的安全连接。这可能是由于网络问题、防火墙设置或代理配置等原因引起的。…

unbuntu 22.04 安装和卸载企业微信

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 记录有关在ubuntu22.04上安装和卸载企业微信 以及企业微信无法打开问题处理 1. 正文 1.1 安装 下载wine环境 http://archive.ubuntukylin.com/softwar…

apache hudi 初见

git clone https://gitee.com/apache/Hudi.git docker pull yml 文件里面的镜像 然后 docker-compose -f docker-compose_hadoop284_hive233_spark244.yml -p 6p6 up -d 然后就是 在这里插入代码片# Licensed to the Apache Software Foundation (ASF) under one or more …

MySQL之InnoDB存储结构 | 京东物流技术团队

1 InnoDB存储引擎 InnoDB存储引擎最早由Innobase Oy公司开发(属第三方存储引擎)。从MySQL 5.5版本开始作为表的默认存储引擎。该存储引擎是第一个完整支持ACID事务的MySQL存储引擎,特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读&…

机器学习实战 | 股票价格预测项目(深度学习初级)

目录 简介技术流程1. 载入依赖包2. 读取数据集3. 从数据集中分析价格4. 对数据排序5. 数据标准化6. 创建、训练和保存LSTM网络7. 使用LSTM模型进行股票价格预测8. 可视化预测和实际结果 完整程序 简介 准备写个系列博客介绍机器学习实战中的部分公开项目。首先从初级项目开始。…

面试题之spring源码

IOC的底层原理 : Spring是如何循环依赖的。(三级缓存,提前曝光): 循环依赖的定义:循环依赖就是循环引用,也就是两个或两个以上bean对象互相持有对方,最终形成闭环,比如A依赖B,B依赖C…

文件夹加密软件怎么选?文件夹加密软件盘点

文件夹是电脑储存数据的重要工具,那么该如何保护文件夹的数据安全呢?使用合适的文件夹加密软件可能是最简单的方法。那么文件夹加密软件该怎么选呢? 文件夹加密超级大师 文件夹加密超级大师可以说是最全能的文件夹加密软件,它拥有…

自己编写chrome插件

1.首先你需要一个menifest.json文件 {"manifest_version": 3,"name": "My Extension","version": "2.0","action": {"default_popup": "popup.html","default_icon": "icon.…

winform弹出消息自动消失

winform弹出消息自动消失 弹出消息后,在指定时间毫秒后消失.消息中包含异常消息,自动一直展示,点击关闭显示; 效果如图 using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks;usi…

保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识

1.简介 有的小伙伴或者童鞋们可能会好奇地问,不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解,你就能越掌握Fiddler的使用方法,反过来你越使用Fiddler,就越能帮助你了解HTTP协议。 Fid…

全网最全,项目管理工具大合集!

早上好,我是老原。 很久没给大家更新工具,本以为之前更新的也够大家用了,没想到还是有很多小友来私信老原好用工具。 关注我比较久的粉丝都知道,我提倡的工具在精不在多,更多的把精力放在自身上,还有啥不…

Vue使用百度地图API详细教程

Vue使用百度地图详细教程 先提供几个文档 Vue-Baidu-map文档:https://dafrok.github.io/vue-baidu-map/#/zh/index 百度地图JavaScript文档:https://lbsyun.baidu.com/index.php?titlejspopularGL 1、申请百度API密钥 控制台->应用管理->我的应…

博途字符串和FIFO编程应用(SCL源代码)

FIFO的其它介绍请参看下面文章链接: PLC堆栈(FIFO)操作之栈级联_三菱plc控制系统的堆栈的工作原理_RXXW_Dor的博客-CSDN博客这篇博文主要讲下各种缓存栈的级联,提供一个分析问题的扩展思路,这个级联什么时候适合在项目里使用需要具体分析。级联实现数据队列的一级级递推传送…

Redis 安装

目录 1、准备安装环境 2、上传安装文件 3、解压安装文件 4、进入安装目录 5、运行编译命令 6、前台启动 ​编辑7、后台启动 8、验证服务 9、关闭服务 10、开启启动 1、准备安装环境 由于 Redis 是基于 C 语言编写的,因此首先需要安装 Redis 所需要的依赖…

Python(一):为什么我们要学习Python?

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

星辰天合受邀参加 2023 全球数字经济大会

7 月 4 日至 7 日,以“数据驱动发展,智能引领未来”为主题的2023全球数字经济大会在北京隆重举办。作为国内技术领先的数据基础设施提供商,星辰天合以北京优秀信创企业代表的身份,受北京信息化协会邀请,参加了 2023 全…

ICC2:copy block方法

open_lib new.nlib open_lib old_lib copy_block -from_block old_block -to_block new.nlib:old_block save_lib new.nlib close_lib 如果是从同一个lib下的block copy到同个lib里,那就open_lib后直接copy就好了,操作时用current_block new_name_b…

多元回归预测 | Matlab基于高斯过程回归(GPR)的数据回归预测,matlab代码,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于高斯过程回归(GPR)的数据回归预测,matlab代码,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 Proteus仿真小实验: STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 功能: 硬件组成:STM32F103R6单片机 LCD12864显示器多个按键 1.标准俄罗斯方块经典游戏玩法,带计时&#xff0c…