【Python】异常处理结构

文章目录

  • 1.python异常
  • 2.try_except异常处理结构
  • 3.try... 多个except异常处理
  • 4.try_except_else异常处理结构
  • 5.try_except_finally异常处理结构
  • 6.常见报错类型

在运行代码时,总是遇到各种异常,且出现异常时,脚本就会自动的的停止运行,那我们该如何处理异常呢?

1.python异常

在这里插入图片描述
可以看到调用a方法时:想要输出两个内容,但是因为第一个print(2/0)报错,导致下面的内容也被停止执行,有没有可以指出报错地方的同时还可以执行下面的代码

2.try_except异常处理结构

try:
	可能报错的语句执行体
except (报错异常名称):
	报错异常的语句执行体

try块包含着可能引发异常的代码,except块则用来捕捉和处理发生的异常。执行的时候,如果 try块中没有引发异常,则跳过ecept块继续执行后续代码;执行的时候,如果try块中发生了异常,则跳过 try块中的后续代码,跳到相应的except块中处理异常;异常处理完后,继续执行后续代码。|

try:
    print(1)
    num = 3/0
    print(2)
except BaseException as e:
    print(3)
    print(e)

输出
1
3
division by zero

3.try… 多个except异常处理

try:
	可能报错的语句执行体
except (报错异常名称):
	报错异常的语句执行体
except (报错异常名称):
	报错异常的语句执行体
except (报错异常名称):
	报错异常的语句执行体

跟上面的没有多大的区别,就是根据报错名称,去选择性的执行报错异常体,更好的让客户了解异常出现的原因

try:
    a = int(input("输入数字:"))
    b = int(input("输入数字:"))
    print(a/b)
except ZeroDivisionError:
    print("除数不能为0")
except ValueError:
    print("只能输入整数")
except BaseException as e:
    print(e)
输出:
输入数字:a
只能输入整数

输入数字:3
输入数字:0
除数不能为0

4.try_except_else异常处理结构

try…except…else结构增加了“else块”。如果 try块中没有抛出异常,则执行else块。如果trv块中抛出异常,则执行except块,不执行else块。

try:
    a = int(input("输入数字:"))
    b = int(input("输入数字:"))
    c = a/b
    print(c)
except ZeroDivisionError:
    print("除数不能为0")
except ValueError:
    print("只能输入整数")
except BaseException as e:
    print(e)
else:
    print(c*100)

输出
输入数字:3
输入数字:2
1.5
150.0

5.try_except_finally异常处理结构

无论代码有没有什么遇到异常,都会执行finally语句,通常是为了释放try资源

try:
	可能报错的语句执行体
except (报错异常名称):
	报错异常的语句执行体
finally:
	必须执行的代码

如果不存在该文件,f.close()就会报错,需要再try,接受异常

try:
    f = open("D://1.txt","r",encoding="utf-8")
    data = f.read()
    print(data)
except FileNotFoundError:
    print("file文件不存在")
finally:
    try:
        f.close()
    except NameError:
        print("f没有定义")

6.常见报错类型

错误类型描述
SyntaxError表示代码中存在语法错误。
IndentationError当代码中缩进不正确时发生。
NameError当未找到本地或全局名称时引发。
TypeError表示将操作或函数应用于不适当类型的对象。
ValueError当内置操作或函数收到具有正确类型但不合适值的参数时引发。
KeyError在字典键未找到时引发。
IndexError表示序列下标超出范围。
AttributeError在属性引用或赋值失败时引发。
ImportError当导入语句无法找到要导入的模块或名称时引发。
FileNotFoundError当请求但找不到文件或目录时引发。
IOError在输入/输出操作失败时引发(例如,打开或写入文件)。
ZeroDivisionError在除以零或取模零时引发。
KeyboardInterrupt当用户中断执行(例如,按下 Ctrl+C)时引发。
MemoryError表示操作耗尽了内存。
NotImplementedError当需要在子类中实现的抽象方法未实现时引发。
OverflowError表示算术操作的结果太大无法表示。
RecursionError表示超出了最大递归深度。
SystemExit当 Python 解释器退出时引发。

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

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

相关文章

网络编程day5

目录 使用select实现TCP并发服务器 使用poll实现TCP客户端 UDP实现网络聊天室 服务器 ser.h main.c func_ser.c makefile 客户端 cli.h main.c func_cli.c makfile 思维导图 使用select实现TCP并发服务器 #include <myhead.h> int main(int argc, const c…

Create AI大会|人人皆可成为开发者,探索人工智能新趋势

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度渗透到我们生活的方方面面。2024年4月16日&#xff0c;备受瞩目的Create 2024百度AI开发者大会在深圳国际会展中心&#xff08;宝安&#xff09;盛大开幕。大会以“创造未来”为主题…

47.基于SpringBoot + Vue实现的前后端分离-校园外卖服务系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的校园外卖服务系统设计与实现管理工作…

人才测评的方法有哪些?

人才测评是企业在筛选人才的时候必然会使用的策略&#xff0c;为了节省企业HR在招聘时的成本&#xff0c;又极大提高了人才和岗位的匹配度&#xff0c;从企业发展和员工个人发展来看&#xff0c;起到了双赢的作用&#xff0c;在线人才测评是现代企业招聘&#xff0c;人才选拔&a…

力扣哈哈哈哈

public class MyStack {int top;Queue<Integer> q1;Queue<Integer> q2;public MyStack() {q1new LinkedList<Integer>();q2new LinkedList<Integer>();}public void push(int x) {q2.offer(x);//offer是入队方法while (!q1.isEmpty()){q2.offer(q1.pol…

如何通过Postgres的日志进行故障排查?

文章目录 一、配置日志记录二、查看和分析日志三、使用日志进行故障排查的示例四、总结 在进行数据库管理和维护时&#xff0c;日志分析是一项至关重要的技能。PostgreSQL的日志记录功能可以帮助我们追踪数据库的运行状态&#xff0c;定位问题&#xff0c;以及优化性能。下面&a…

51单片机入门_江协科技_33~34_OB记录的自学笔记_LED呼吸灯与PWM直流马达调速

33. 直流电机驱动(PWM) 33.1. 直流电机介绍 •直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极&#xff0c;当电极正接时&#xff0c;电机正转&#xff0c;当电极反接时&#xff0c;电机反转 •直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&…

如何规划数据中台

1. 数据中台是一套解决方案 数据中台是一套可持续“让企业数据用起来”的机制&#xff0c;是一套解决方案&#xff0c;不仅是一个平台。让数据更加灵活地支撑前端业务&#xff0c;通过持续沉淀企业数据复用能力形成数据从采集、治理、开发到数据服务的一整套数据使用的机制。 …

SpringBoot 监控 SQL 运行情况(实战教程)

1 基本概念 2 添加依赖 3 配置相关属性 4 sql监控 5 慢sql记录 6 spring 监控 7 去 Ad&#xff08;广告&#xff09; 8 获取 Druid 的监控数据 1 基本概念 Druid是Java语言中最好的数据库连接池。 虽然HikariCP的速度稍快&#xff0c;但是&#xff0c;Druid能够提供强…

【考研高数】学习笔记分享

派大星说数学&#xff08;导学部分&#xff09; 关于做题 测试 答疑阶段 直播 群内 高中基础知识导学 一、数与式 述了课程学习和因式分解、分式拆解等知识点。学生应了解课程内容&#xff0c;带着疑问听课&#xff0c;不要抄笔记&#xff0c;导学课和基础课都有测验&…

mac安装nvm详细教程

0. 前提 清除电脑上原有的node (没有装过的可以忽略)1、首先查看电脑上是否安装的有node,查看node版本node -v2、如果有node就彻底删除nodesudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}2、保证自己的电脑上有安装git,不然下载n…

鼠标悬停显示三个下拉列表按钮

鼠标悬停显示三个下拉列表按钮 代码部分&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,user-scala…

京东AI数字人“采销东哥”首秀观看量破2000万;天工 SkyMusic 音乐大模型开放公测

&#x1f989; AI新闻 &#x1f680; 京东AI数字人“采销东哥”首秀观看量破2000万 摘要&#xff1a;京东AI数字人“采销东哥”由京东云言犀打造&#xff0c;在其直播首秀中亮相并迅速吸引超2000万观看量。尽管“采销东哥”的外形和口音与创始人刘强东相似&#xff0c;但其直…

SSL Pinning之双向认证

双向认证处理流程 概述获取证书逆向app 获取证书的KeyStore的 key通过jadx 反编译 app 获取证书&#xff1a;frida hook 证书转换命令行转换portecle 工具使用 charles 配置 p12 格式证书 概述 本篇只介绍怎么解决ssl pinning&#xff0c; 不讲ssl/tls 原理。 为了解决ssl pinn…

运动想象 (MI) 分类学习系列 (8) :IFNet

运动想象分类学习系列:IFNet 0. 引言1. 主要贡献2. 提出的方法2.1 交互式频率卷积神经网络2.1.1 光谱空间特征表示2.1.2 跨频交互2.1.3 分类&#xff08;一个池化分类层&#xff09; 2.2 重复试验增强 3. 实验3.1 基线比较3.2 消融实验3.2.1 数据增强消融3.2.2 条带分割消融3.2…

✅技术社区--布隆过滤器在项目中怎么用的?不用可以吗?

使用 布隆过滤器 一般就是用于快速判断某个元素是否在集合中出现了&#xff0c;可以用于解决 缓存穿透 的问题&#xff0c;布隆过滤器提供 一组哈希函数 h1, h2, ..., hk &#xff0c;对需要存储的数据使用哈希函数计算得到 k 个哈希值&#xff0c;将 BitMap 中这 k 个位置都设…

面试stm32基础知识

1.ISP 第一步进入bootloader模式&#xff1a;先置BOOT0为高&#xff0c;BOOT1为低&#xff0c;再复位单片机进入bootloader模式&#xff0c;之后通过上位机下载程序&#xff1b; 第二步配置启动代码的地方&#xff1a;代码下载完毕后&#xff0c;置BOOT0为低&#xff0c;BOOT1…

中兴F7607P自启动程序,关闭JAVA插件

本文目的&#xff1a;关闭光猫内自动运行的JAVA插件&#xff0c;并实现开机自动调用用户的程序启动 移动定制版F7607P不带LXC容器&#xff0c;取而代之的是JAVA虚拟机&#xff0c;内置多个插件&#xff0c;包括名为CMCCDPI的插件&#xff0c;用途可以从名字上窥见。机器rootfs分…

Windows系统下查看C语言文件反汇编

一、配置编译器环境变量 1.下载mingw64 MinGW 的全称是&#xff1a;Minimalist GNU on Windows &#xff0c;MinGW 就是 GCC 的 Windows 版本 。 MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序&#xff0c;而 MinGW-w64 则可以编译生成 64位 或 32位 可执行…

FinalShell 远程连接 Linux(Ubuntu)系统

Linux 系列教程&#xff1a; VMware 安装配置 Ubuntu&#xff08;最新版、超详细&#xff09;FinalShell 远程连接 Linux&#xff08;Ubuntu&#xff09;系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️➡️提出一个问题&#xff1a;为什么使用 FinalShell 连接&#xff0…
最新文章