news 2026/4/16 18:07:48

Python中的异常处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python中的异常处理

异常

""" 异常(Exception): 1.什么是异常? python运行时,发生的错误,而导致程序最终无法执行,异常! 思考:有没有出现错误? 编译过程中的错误,红色波浪线 运行过程中的错误,编译通过,但是运行之后报错 补充: 特性:运行时发生红色的错误,终止程序 异常的父类:BaseException 2.如何处理异常? try: 可能会出现问题的代码 except [抓取异常的类型 as e]: 处理的结果 """

示例

#异常示例#1 分母不能为0print("运行前")try:res=10/0#ZeroDivisionErrorprint(res)exceptZeroDivisionErrorase:print(e)print("运行后")#运行结果运行前 division by zero 运行后#2 文件不存在try:withopen("../exception/a.txt","r",encoding="utf-8")asf:print(f.read())exceptFileNotFoundErrorase:print(e)print("读取后")#运行结果[Errno2]No suchfileordirectory:'../exception/a.txt'读取后#3 转换异常str1="zhangsan"try:res=int(str1)exceptValueErrorase:print(e)print("转换后")#运行结果invalid literalforint()withbase10:'zhangsan'转换后

处理异常

""" 处理异常 1.异常的复杂格式 try: 可能会出现问题的代码 except [抓取异常类型 as 别名]: 处理代码 [else: 没有发生异常处理的代码 finally: 作用:一般用来关闭文件或者释放资源的 异常的处理出口 ] 2.合并处理异常 -了解 try: 异常代码 except (异常1,异常2,异常3......异常n) as e: 3.处理多级异常 注意: except可以写多个,分别抓取不同的异常信息 一般情况下,异常处理的对象(范围越小,异常信息更准确)越小越好 父异常一般写在子异常之后 """

异常的复杂格式

#1 案例:处理文件异常f=Nonetry:f=open('test.txt',"r",encoding="utf-8")res=f.read()print(res)exceptExceptionase:print("文件找不到")else:print("当前正常")finally:print("程序正在执行finally块")iffisnotNone:#在写finally时需要加判断f.close()

合并处理异常

#2 合并异常格式try:res=10/0#division by zerores2=int("lisi")#ValueErrorexcept(ZeroDivisionError,ValueError)ase:print(e)

多个异常处理

#3 多个异常处理#案例:读取文件内容,转换为int,再除以0try:f=open('test.txt',"r",encoding="utf-8")res=int(f.read())res=res/0print(res)exceptFileNotFoundErrorase:print(e)exceptValueErrorase:print(e)exceptZeroDivisionErrorase:print(e)exceptExceptionase:print(f"不可预估的错误{e}")

案例——自定义异常

""" 异常实现登录案例 !!!自行抛出异常时,需要使用raise """
#自定义异常classMyException(Exception):msg=""def__init__(self,msg):self.msg=msg#模拟数据库的用户数据username_mysql="zhangsan"password_mysql="123"deflogin(username,password):#1 用户名是否存在ifusername_mysql!=username:#抛出一个自定义异常raiseMyException("用户不存在")#2.密码是否准确ifusername==username_mysqlandpassword!=password_mysql:raiseMyException("密码错误")#3 是否登录成功returnTrueif__name__=='__main__':username=input("username: ")password=input("password: ")try:login(username,password)exceptExceptionase:print(e)else:print("ok")

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:03:46

CodeArts Doer代码智能体

什么是CodeArts Doer代码智能体 CodeArts Doer代码智能体是一款集代码大模型、AI IDE、代码Agent为一体的智能编码产品。面向代码生成、研发知识问答、单元测试用例生成、代码解释、代码注释、代码调试、代码翻译、代码检查、代码优化等场景功能,为开发者提高研发效…

作者头像 李华
网站建设 2026/4/16 9:04:38

SpringMVC的处理流程

一张图搞懂 SpringMVC 完整请求流程:从浏览器到页面响应的全链路拆解作为 Java 后端开发者,SpringMVC 的请求处理流程是日常开发的核心逻辑,但很多时候我们只知其然不知其所以然。今天,我就通过这张经典的 SpringMVC 处理流程图&a…

作者头像 李华
网站建设 2026/4/16 11:08:14

YOLOv8科研级轻量化升级:基于SOTA ADown的高效下采样设计

文章目录 【YOLOv8科研级轻量化】集成SOTA轻量下采样ADown,让模型下采样效率跃升20%+ 一、为什么要做这个改进? 二、先搞懂原理:ADown的设计逻辑 1. ADown的核心设计 2. 替换YOLOv8下采样的思路 三、动手改造YOLOv8:从代码到训练的完整路径 步骤1:实现ADown的核心代码 步骤…

作者头像 李华
网站建设 2026/4/15 9:18:22

一文吃透图像超分辨率:SRResNet核心原理与实战实现

文章目录 一、 引言:揭秘图像超分辨率的奥秘 二、 SRResNet算法原理:深度学习赋能图像超分辨率 1. 深度残差网络:突破传统网络的瓶颈 1.1 残差学习的核心思想 1.2 SRResNet中的深度残差模块 2. 子像素卷积:高效且可学习的上采样方案 2.1 子像素卷积的优势 2.2 子像素卷积的…

作者头像 李华
网站建设 2026/4/16 9:09:14

Python自然语言处理的技术未来与架构演进

Python自然语言处理的未来(主题演讲,PyCon哥伦比亚 2020) 视频:https://www.youtube.com/watch?vYDAgQO1DX0Q Twitter 主题讨论:https://twitter.com/_inesmontani/status/1226501968832671744 核心技术组件 SPACY - …

作者头像 李华
网站建设 2026/4/16 9:08:01

导师严选2026自考AI论文平台TOP10:哪款真能帮你写好毕业论文?

导师严选2026自考AI论文平台TOP10:哪款真能帮你写好毕业论文? 2026年自考AI论文平台测评:如何选对工具提升写作效率? 随着人工智能技术的不断进步,越来越多的自考生开始借助AI论文平台来辅助毕业论文的撰写。然而&…

作者头像 李华