【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/0print(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/bprint(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.mzph.cn/news/824835.shtml

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

相关文章

就业班 第三阶段(nginx) 2401--4.17 day1 nginx1

负载均衡集群 1、集群是什么? 1 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。 …

FinalShell 远程连接 Linux(Ubuntu)系统

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

初识ansible服务及ansible主机清单配置

目录 1、什么是自动化批量管理 2、自动化工具ansible架构 3、ansible服务专用术语对照表 4、设置主机清单(inventory) 4.1实验环境准备 4.2配置主机清单 4.2.1分组基本格式 4.2.2指定用户名,密码。端口 4.2.3子组 4.3查看 4.3.1看…

LeetCode———144—— 二叉树的前序遍历

目录 ​编辑 1.题目 2.解答 1.首先计算二叉树的节点个数: 2.以先序遍历(Preorder Traversal)的方式遍历一个二叉树,并将遍历到的节点的值存储在一个整数数组中 3.最终代码 1.题目 . - 力扣(LeetCode) 给…

双碳目标下基于“遥感+”集成技术的碳储量、碳排放、碳循环、温室气体等多领域监测与模拟

以全球变暖为主要特征的气候变化已成为全球性环境问题,对全球可持续发展带来严峻挑战。2015年多国在《巴黎协定》上明确提出缔约方应尽快实现碳达峰和碳中和目标。2019年第49届 IPCC全会明确增加了基于卫星遥感的排放清单校验方法。随着碳中和目标以及全球碳盘点的现…

[stm32]DMA使用

自动重装和M2M(软件trig)不能一起使用,否则会停不下来 void MyDMA_Init(uint32_t AddrA,uint32_t AddrB,uint16_t Size){RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_InitTypeDef DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddrAddrA;//外…

爬楼梯(c)

文章目录 描述分析思路关键代码运行结果 描述 给定一个整数数组 cost ,其中 cost[i]是从楼梯第i 个台阶向上爬需要支付的费用,下标从0开始。-旦你支付此费用,即可选择向上爬一个或者两个台阶 要求:请你计算并返回达到楼梯顶部的…

在使用lombok的@Slf4j时,启动项目报错。java:找不到符号

问题背景: 在使用lombok的Slf4j时,启动项目报错。 java:找不到符号符号: 方法info(java.lang.String,java.lang.String)位置: 类型为org.apache.ibatis.logging.Log的变量 log解决方式: 在如图所示位置加…

在线预约家政服务小程序上门服务源码系统 带完整的安装代码包以及搭建教程

随着互联网的快速发展,家政服务行业也逐渐向线上化、智能化转型。为了满足广大用户的需求,罗峰给大家分享一款在线预约家政服务小程序上门服务源码系统。该系统不仅功能完善,而且操作简单,是您打造高效、便捷的家政服务平台的首选…

MySql 表中的id突然变很大,如何给id重新排序

目录 一、场景 二、解决方法 一、场景 我们在开发过程中,难免遇到id突然增大的情况。 由于id突然增大很多,我们重新增加数据时候id会默认加1 那么如何让id 重新从1按顺序排序呢 二、解决方法 点击编辑表,然后新建一个字段id2,将…

探索分布式系统监控zabbix-------------监控Windows

扩展windows 10 server2012 server2016 server2019 监控 一、在虚拟机中安装zabbix的客户端 下载网站 Download and install Zabbix 安装系统一直托不进虚拟机中;因为没安装Tools组件 点击虚拟机,选择安装VMware Tools 查看主机名 二、在web页…

每天五分钟计算机视觉:基于卷积操作完成滑动窗口的图片分类?

本文重点 我们前面学习了使用不同大小的滑动窗口来滑动图片,然后切分成许多小的图片,然后依次应用到我们已经训练好的图像分类模型中,但是这种方式效率太低了,本节课程我们学习一种新的方式,来看一下如何并行识别这些剪切的图片。 原始结构 首先我们先来看一下,如何把…

InCopy2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 InCopy是一种专业的文字处理软件,由Adobe公司开发。它通常与Adobe InDesign一起使用,主要用于协作式工作流程中的文本编辑和校对。通过与InDesign的集成,InCopy实现了文本编辑和设计分离&#…

初步了解InnoDB存储引擎的架构设计

1. 更新语句在MySQL中是如何执行的? 之前我们已经分析了MySQL架构上的整体设计原理,现在对一条SQL语句从我们的系统层面发送到MySQL中,然后一步一步执行这条SQL的流程,都有了一个整体的了解。 我们已经知道了,MVSQL最…

Springboot 初始化操作

在使用Springboot过程中,或多或少我们会遇到在Springboot启动时要初始化类,或者加载文件之类的一些操作。关于初始化,主要分为两类,一类是在程序启动后的执行初始化操作,另一类是Bean实例化时执行初始化操作&#xff0…

3D Tiles 规范(一概述)

3D Tiles 专为流式传输和渲染大量 3D 地理空间内容而设计,例如摄影测量、3D 建筑、BIM/CAD、实例化要素和点云。它定义了分层数据结构和一组提供可渲染内容的Tile格式。3D Tiles 没有定义内容可视化的明确规则;客户可以根据自己认为合适的方式可视化 3D …

如何理解Vue 3组件的component关键字

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Verilog仿真跨模块调用内部信号的方法

在Verilog仿真时如果需要调用某子模块中的信号在本模块中使用可以使用层次化引用的方法,而不需要在rtl部分用端口引出来。 引用方式:当前例化模块名.子例化模块名.子子例化模块名.参数 将需要的信号引出。 注意是用例化模块名而不是用子模块名&#xff…

【C++】二维数组传参方式

最近刚开始刷剑指offer,刚做到第三题的时候,发现C二维数组的传参方式和C语言略有些不同,所以在这篇博客中,会列出C/C常见的二维数组传参方式。(本方式和代码都是基于vs环境所编写) 一.C语言二维数组传参方式…

CCF区块链论文录用资讯--ICSE 2024

ICSE是CCF A类会议 (软件工程/系统软件/程序设计语言) 其2024录用了13篇区块链论文 Smart Contract and DeFi Security Tools: Do They Meet the Needs of Practitioners? 智能合约和 DeFi 安全工具:它们满足从业者的需求吗? St…