【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.rhkb.cn/news/312920.html

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

相关文章

信息系统项目管理师——第8章项目整合管理(二)

项目管理知识♥♥♥♥♥ 管理项目知识是做什么? 管理项目知识是使用现有知识并生成新知识,以实现项目目标并且帮助组织学习的过程。 管理项目知识的作用是什么? ①利用已有的组织知识来创造或改进项目成果;②使当前项目创造的知识可用于支持组织运营和未来的项目…

第十六篇:springboot案例

文章目录 一、准备工作1.1 需求说明1.2 环境搭建1.3 开发规范1.4 思路 二、部门管理2.1 查询部门2.2 删除部门2.3 新增部门2.4 修改部门2.5 RequestMapping 三、员工管理3.1 分页查询3.2 删除员工3.3 新增员工3.3.1 新增员工3.3.2 文件上传 3.4 修改员工3.4.1 页面回显3.4.2 修…

手机拍照技术

拍照技巧 说明: 本文将主要介绍摄影和手机常见技巧; 1. 摄影的基本知识 **说明:**关于摄影,手机和相机的原理都是相同的,不同的是相机在很多方面优于手机,但是专业的设备对于我们这种的非专业的人来说,刚…

【八股】Redisson分布式锁

Redisson分布式锁 主要了解了Redisson分布式锁实现的三个功能: 1.可重入 -> 防止死锁 2.可重试(i.e. 非阻塞获取锁) 3.自动续约 1. 可重入 原理: 利用Redis的Hash结构,记录了使用当前锁的线程id和重用次数&#…

React + 项目(从基础到实战) -- 第八期

ajax 请求的搭建 引入mockAP接口设计AJAX 通讯 前置知识 HTTP 协议 , 前后端通讯的桥梁API : XMLHttpRequest 和 fetch常用工具axios mock 引入 Mock.js (mockjs.com) 使用 mockJS 前端代码中引入 mockJs定义要模拟的路由 , 返回结果mockJs 劫持ajax请求(返回模拟的结果)…

【读论文】【泛读】三篇生成式自动驾驶场景生成: Bevstreet, DisCoScene, BerfScene

文章目录 1. Street-View Image Generation from a Bird’s-Eye View Layout1.1 Problem introduction1.2 Why1.3 How1.4 My takeaway 2. DisCoScene: Spatially Disentangled Generative Radiance Fields for Controllable 3D-aware Scene Synthesis2.1 What2.2 Why2.3 How2.4…

C++进阶(2)-函数

目录 一、函数提高 1.1函数默认参数 1.2函数占位参数 1.3函数重载 1.3.1函数重载概述 1.3.2函数重载注意事项 二、类和对象 2.1封装 2.1.1封装的意义 2.1.2struct和class区别 2.1.3成员属性设置为私有 2.1.4封装案例 2.2对象的初始化和清理 2.2.1构造函数和析构函数 …

van-uploader 在app内嵌的webview中的一些坑

问题: 部分版本在ios 中没有问题,但是安卓中不触发图片选择和拍照(之前是可以的,可能是没有锁定版本,重新发版导致的)。在ios中下拉文案是英文,html配置lang等于 zh 也没有用,ios里…

Learn SRP 02

3.Editor Rendering 3.1Drawing Legacy Shaders 因为我们的管线只支持无光照的着色过程,使用其他不同的着色过程的对象是不能被渲染的,他们被标记为不可见。尽管这是正确的,但是它还是隐藏了场景中一些使用错误着色器的对象。所以让我们来渲…

libftdi1学习笔记 5 - SPI Nor Flash

目录 1. 初始化 2. CS控制例子 3. 读ID 3.1 制造商 3.2 容量大小 3.3 设置IO类型 3.3.1 setQSPIWinbond 3.3.2 setQSPIMxic 3.3.3 setQSPIMicrochip 3.3.4 setQSPIMicron 4. 写保护 5. 等待空闲 6. 擦除扇区 7. 页编程 8. 页读 9. 写 10. 读 11. 验证 基于M…

Postman之版本信息查看

Postman之版本信息查看 一、为何需要查看版本信息?二、查看Postman的版本信息的步骤 一、为何需要查看版本信息? 不同的版本之间可能存在功能和界面的差异。 二、查看Postman的版本信息的步骤 1、打开 Postman 2、打开设置项 点击页面右上角的 “Set…

Xshell无法输入命令输入命令卡顿

Xshell是一款功能强大的终端模拟软件,可以让用户通过SSH、Telnet、Rlogin、SFTP等协议远程连接到Linux、Unix、Windows等服务器。然而,在使用Xshell的过程中,我们可能会遇到一些问题。比如输入不了命令,或者输入命令很卡。这些问题…

content-type对数据采集的影响,猿人学58题

在拿猿人学网站 https://www.python-spider.com/api/challenge58 练习的时候发现请求头中少了 content-type之后结果全部不对了 当我设置headers如下时 headers {# accept: application/json, text/javascript, */*; q0.01,content-type: application/x-www-form-urlencode…

445. 两数相加 II

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 [7,2,4,3], l2 [5,6,4]…

2024腾讯一道笔试题--大小写字母移动

题目🍗 有一个字符数组,其中只有大写字母和小写字母,将小写字母移到前面, 大写字符移到后面,保持小写字母本身的顺序不变,大写字母本身的顺序不变, 注意,不要分配新的数组.(如:wCelOlME,变为wellCOME). 思路分析🍗 类似于冒泡排序,两两比较…

基于SpringBoot+Vue的疾病防控系统设计与实现(源码+文档+包运行)

一.系统概述 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对疾病防控信息管理的提升&a…

snort安装和使用

win10 x64安装snort 下载snort https://www.snort.org/downloads 下载npcap 0.9984版本 https://npcap.com/dist/ 安装npcap ,snort 安装成功 如果使用npcap版本不对或者使用winpcap会出现错误,winpcap不在win10运行。 snort.conf #-----------------------------------…

多ip证书实现多个ip地址https加密

在互联网快速发展的现在,很多用户会使用由正规数字证书颁发机构颁发的数字证书,其中IP数字证书就是只有公网IP地址网站的用户用来维护网站安全的手段。由于域名网站比较方便记忆,只有公网IP地址的网站是很少的,相应的IP数字证书产…

Python 入门指南(一)

原文:zh.annas-archive.org/md5/97bc15629f1b51a0671040c56db61b92 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 这个学习路径帮助你在 Python 的世界中感到舒适。它从对 Python 的全面和实用的介绍开始。你将很快开始在学习路径的第一部分编写程序…

5. Mysql的binlog介绍

参考:InnoDB学习(三)之BinLog 1. BinLog介绍 BinLog又称为二进制日志,是MySQL服务层的数据日志,MySQL所有的存储引擎都支持BinLog。 BinLog记录了MySQL中的数据更新和可能导致数据更新的事件,可以用于主从…