8.Python 异常(异常演示、异常捕获、异常传递)

一、异常引入

1、异常概述
  • 当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的异常,即常说的 Bug
2、异常演示
  • 以 r 模式打开一个不存在的文件
f = open('linux.txt', 'r')
  • 输出结果
Traceback (most recent call last):File "D:\系统默认\桌面\其他\Python\Python 基础入门\演示\pythonBasic\8.errorModulePackage\8-1.ErrorShow.py", line 1, in <module>f = open('linux.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'linux.txt'

二、异常捕获

1、基本介绍
  • 世界上没有完美的程序,任何程序在运行的过程中,都有可能出现异常,也就是出现 Bug,导致程序无法运行下去,我们要做的,不是力求程序完美运行,而是在力所能及的范围内,对可能出现的 Bug,进行提前准备、提前处理,这种行为称之为异常捕获

  • 当程序遇到了 Bug,有两种情况,要么整个程序因为一个 Bug 停止运行,要没对 Bug 进行提醒,整个程序继续运行

  • 捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段

2、捕获常规异常
(1)基本介绍
try:【可能发生异常的代码】
except:【捕获异常后执行的代码】
(2)基本使用
  • 尝试以 r 模式打开文件,如果文件不存在,则以 w 模式打开
try:f = open('linux.txt', 'r')
except:f = open('linux.txt', 'w')
3、捕获指定异常
try:print(name)
except NameError as e:print('name 变量未定义异常')try:1 / 0
except NameError as e:print('发生了异常')
  • 输出结果
Traceback (most recent call last):File "D:\系统默认\桌面\其他\Python\Python 基础入门\演示\pythonBasic\8.errorModulePackage\8-3.CatchNameError.py", line 8, in <module>1 / 0
name 变量未定义异常
  1. 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常

  2. 一般 try 下方只放一行尝试执行的代码

4、捕获多个异常
  • 当捕获多个异常时,可以把要捕获的异常类型,使用元组的方式进行书写到 except 后
try:1 / 0
except (NameError, ZeroDivisionError) as e:print('发生了异常')
5、捕获异常并输出描述信息
try:print(name)
except NameError as e:print(e)try:1 / 0
except ZeroDivisionError as e:print(e)
  • 输出结果
name 'name' is not defined
division by zero
6、捕获所有异常
try:print(name)
except Exception as e:print(e)try:1 / 0
except Exception as e:print(e)
  • 输出结果
name 'name' is not defined
division by zero
7、异常 else
  • else 表示的是如果没有异常要执行的代码
try:print(1)
except Exception as e:print(e)
else:print('我是 else 1,是没有异常的时候执行的代码')try:print(name)
except Exception as e:print(e)
else:print('我是 else 2,是没有异常的时候执行的代码')
  • 输出结果
1
我是 else 1,是没有异常的时候执行的代码
name 'name' is not defined
8、异常 finally
  • finally 表示的是无论是否发生异常都要执行的代码,例如,关闭文件
try:print(1)
except Exception as e:print(e)
else:print('我是 else 1,是没有异常的时候执行的代码')
finally:print('我是 finally 1')try:print(name)
except Exception as e:print(e)
else:print('我是 else 2,是没有异常的时候执行的代码')
finally:print('我是 finally 2')
  • 输出结果
1
我是 else 1,是没有异常的时候执行的代码
我是 finally 1
name 'name' is not defined
我是 finally 2

三、异常传递

1、基本介绍
  • 异常是具有传递性的,当这个传递的异常没有(在各个函数中)被捕获时,程序就会报错
2、演示
  1. 当函数 fn1 中发生异常,并且没有捕获这个异常的时候,异常会传递到函数 fn2,当函数 fn2 也没有捕获这个异常的时候,异常会传递到函数 main

  2. 利用异常具有传递性的特点,当我们想要保证程序不会因为异常崩溃的时候,就可以在 main 函数中设置异常捕获,由于无论在整个程序哪里发生异常,最终都会传递到 main 函数中,这样就可以确保所有的异常都会被捕获

def fn1(): # 异常在 fn1() 中没有被捕获print("fn1 开始")1 / 0print("fn1 结束")def fn2(): # 异常在 fn2() 中没有被捕获print("fn2 开始")fn1()print("fn2 结束")def main(): # 异常在 main() 中被捕获try:print("main 开始")fn2()print("main 结束")except ZeroDivisionError as e:print(e)main()
  • 输出结果
main 开始
fn2 开始
fn1 开始
division by zero

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

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

相关文章

FFmpeg的简单使用【Windows】--- 视频倒叙播放

实现功能 点击【选择文件】按钮可以选择视频&#xff0c;当点击【开始处理】按钮之后&#xff0c;会先将视频上传到服务器&#xff0c;然后开始进行视频倒叙播放的处理&#xff0c;当视频处理完毕之后会将输出的文件路径返回&#xff0c;同时在页面中将处理好的视频展示出来。…

【Redis】什么是Redis

Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的(key/value)分布式内存数据库&#xff0c;基于内存运行,并支持持久化的NoSQL数据库&#xff0c;是当前最热门的NoSql数据库之一…

第二十三篇:网络拥塞了,TCP/IP如何解决的?

一.显示拥塞通知 当发生网络拥塞时&#xff0c;发送主机应该减少数据包的发送量。作为IP上层协议&#xff0c;TCP虽然也能控制网络拥塞&#xff0c;不过它是通过数据包的实际损坏情况来判断是否发生拥塞。然而这种方法不能在数据包损坏之前减少数据包的发送量。 为了解决这个…

Kubernetes 深度解读:从容器到容器云的奇幻之旅

《Kubernetes 深度解读:从容器到容器云的奇幻之旅》 在当今数字化的时代,应用程序的部署和管理面临着越来越多的挑战。大规模直接使用容器会遇到下面几个问题: 问题一:如何高效管理大量容器? 随着容器技术的广泛应用,企业可能会面临管理成百上千个容器的情况。想象一下…

在 Ubuntu 上安装 Whisper 支撑环境(ffmpeg、PyTorch)的教程(2024亲测可用)

在 Ubuntu 上安装 Whisper 的教程 以下是如何在 Ubuntu 系统上安装 Whisper 以进行视频转录的详细步骤。 步骤 1&#xff1a;更新系统 首先更新你的 Ubuntu 系统&#xff0c;确保安装最新的软件包&#xff1a; sudo apt update && sudo apt upgrade -y步骤 2&#…

Python 将Word, Excel, PDF和PPT文档转换为OFD格式

目录 使用工具 Python 将Word文档转换为OFD Python 将Excel文档转换为OFD Python 将PDF文档转换为OFD Python 将PPT文档转换为OFD OFD&#xff08;Open Fixed-layout Document&#xff09;是中国国家标准的电子文档格式&#xff0c;主要用于政府、金融等行业的正式文档传输…

R语言手工实现主成分分析 PCA | 奇异值分解(svd) 与PCA | PCA的疑问和解答

几个问题: pca可以用相关系数矩阵做吗?效果比协方差矩阵比怎么样?pca做完后变量和样本的新坐标怎么旋转获得?pca做不做scale和center对结果有影响吗?pca用因子分解和奇异值分解有啥区别?后者怎么获得变量和样本的新坐标?1. 用R全手工实现 PCA(对比 prcomp() ) 不借助包…

【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF

未经许可,不得转载。 文章目录 背景漏洞详情受影响版本解决方案背景 Directus 是一款开源 CMS,提供强大的内容管理 API,使开发人员能够轻松创建自定义应用程序,凭借其灵活的数据模型和用户友好的界面备受欢迎。然而,Directus 存在一个漏洞,允许攻击者绕过默认的环回 IP …

使用libssh2上传下载文件及Makefile编写

使用libssh2上传下载文件及Makefile编写 一、准备工作二、上传和下载文件三、编写Makefilelibssh2是一个开源的SSH库,用于在C/C++程序中实现SSH2协议的功能。通过libssh2,我们可以方便地进行远程登录、执行命令、上传和下载文件等操作。本文将详细介绍如何使用libssh2库上传和…

Django发送邮件代理服务器配置

根路由下配置 MAIL_BACKEND django.core.mail.backends.smtp.EmailBackend EMAIL_HOST smtp.qq.com EMAIL_HOST_USER 66897079qq.com EMAIL_HOST_PASSWORD aavlzhzvqorbcahcEMAIL_PORT 465 EMAIL_USE_SSL True发送邮件 message "<p>尊敬的用户您好&#xff…

《基于FreeRTOS的STM32超声波智能避障平衡小车,实现了小车的自平衡、超声波避障以及通过智能手机远程控制的功能》+源代码+文献资料+文档说明

文章目录 源代码下载地址项目介绍项目整体框架环境数据采集进程MPU6050简介如何获得这些数据&#xff1f;配置管脚 MPU6050的eMPL库MPU6050宏定义 小车PID控制进程电机的分类MC3386电机驱动芯片管脚配置 正交码盘与STM32正交编码器管脚配置 超声波测距模块HC-SR04超声波测距模块…

#444到1092

测试同学反馈根据id&#xff08;整形&#xff09;查询输入#444查询时返回了id1092数据。     一个很简单的查询操作&#xff0c;怎么会出现这么无厘头的结果。看了下代码就是简单的等值查询&#xff0c;后端用Long进行接收。然后看请求日志&#xff0c;日志记录id1092&#x…

【网易云音乐】--源代码分享

最近写了一个网易云音乐的音乐实现部分&#xff0c;是通过JavaScript和jQuery实现的&#xff0c;具体效果大家可以参照下面的视频 源代码分享 - git地址: 网易云音乐源代码 下面将着重讲解一下音乐实现部分 视频有点模糊&#xff0c;不好意思&#xff0c;在b站上添加视频的时候…

全能PDF工具集 | PDF Shaper Ultimate v14.6 便携版

软件简介 PDF Shaper是一款功能强大的PDF工具集&#xff0c;它提供了一系列用于处理PDF文档的工具。这款软件使用户能够轻松地转换、分割、合并、提取页面以及旋转和加密PDF文件。PDF Shaper的界面简洁直观&#xff0c;使得即使是新手用户也能快速上手。它支持广泛的功能&…

基于Nodemcu的手机控制小车

基于Nodemcu的手机控制小车 一、项目说明二、项目材料三、代码与电路设计四、轮子和车体五、电路连接六、使用方法 一、项目说明 嗨&#xff0c;机器人项目制造者们&#xff01;在这个项目中&#xff0c;我制作了这辆简单但快速的遥控车&#xff0c;它可以通过智能手机控制&am…

yum仓库安装rabbitmq

yum仓库安装rabbitmq 1、配置yum仓库 vim /etc/yum.repos.d/rabbitmq.repo # In /etc/yum.repos.d/rabbitmq.repo## ## Zero dependency Erlang ##[rabbitmq_erlang] namerabbitmq_erlang baseurlhttps://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck1 gpg…

智能生成ppt软件哪个好?如何高效生成ppt?

想要快速制作出专业且吸引人的PPT演示文稿吗&#xff1f;ai智能生成ppt工具可以帮你实现这一目标。 无需复杂的设计技巧&#xff0c;也不必花费大量时间&#xff0c;只需几个简单的步骤&#xff0c;就能创造出令人印象深刻的演示文稿。下面是一份免费版教程&#xff0c;让你轻…

PyCharm+ssh跳板机+服务器

PyCharmssh跳板机服务器 文章目录 PyCharmssh跳板机服务器准备工作登录服务器查看CUDA查看conda创建虚拟环境 前言配置ssh免密登录设置ssh隧道配置pycharm测试第一种第二种 服务器空闲查询传输数据 准备工作 登录服务器 直接ssh连接就行,在终端(命令行)直接输入下面命令: 跳…

K8s-services+pod详解1

一、Service 我们能够利用Deployment创建一组Pod来提供具有高可用性的服务。 虽然每个Pod都会分配一个单独的Pod IP&#xff0c;然而却存在如下两问题&#xff1a; Pod IP 会随着Pod的重建产生变化Pod IP 仅仅是集群内可见的虚拟IP&#xff0c;外部无法访问 这样对于访问这…

基于Python Django的在线考试管理系统

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…