Python异常总结

一 异常

当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。

print '-----test--1---'
open('123.txt','r')         # 此处发生异常,程序崩溃
print '-----test--2---'

异常需要捕获:

try:print('-----test--1---')open('123.txt','r')print('-----test--2---')
except IOError:pass

try 捕获多个异常:

try:print('-----test--1---')open('123.txt','r') # 如果123.txt文件不存在,那么会产生 IOError 异常print('-----test--2---')print(num)# 如果num变量没有定义,那么会产生 NameError 异常except (IOError,NameError): #如果想通过一次except捕获到多个异常可以用一个元组的方式else:print('没有捕获到异常,真高兴')

finally语句可以在异常发生后强制执行:

import time
try:f = open('test.txt')try:while True:content = f.readline()if len(content) == 0:breaktime.sleep(2)print(content)except:#如果在读取文件的过程中,产生了异常,那么就会捕获到#比如 按下了 ctrl+cpassfinally:f.close()print('关闭文件')
except:print("没有这个文件")

二 异常的传递

如果try嵌套,那么如果里面的try没有捕获到这个异常,那么外面的try会接收到这个异常,然后进行处理,如果外边的try依然没有捕获到,那么再进行传递。

import time
try:f = open('test.txt')try:while True:content = f.readline()if len(content) == 0:breaktime.sleep(2)print(content)finally:f.close()print('关闭文件')
except:print("没有这个文件")

如果一个异常是在一个函数中产生的,例如函数A---->函数B---->函数C,而异常是在函数C中产生的,那么如果函数C中没有对这个异常进行处理,那么这个异常会传递到函数B中,如果函数B有异常处理那么就会按照函数B的处理方式进行执行;如果函数B也没有异常处理,那么这个异常会继续传递,以此类推。如果所有的函数都没有处理,那么此时就会进行异常的默认处理,即通常见到的那样。

    def test1():print("----test1-1----")print(num)print("----test1-2----")def test2():print("----test2-1----")test1()print("----test2-2----")def test3():try:print("----test3-1----")test1()print("----test3-2----")except Exception as result:print("捕获到了异常,信息是:%s"%result)print("----test3-2----")test3()print("------华丽的分割线-----")test2()

三 异常的抛出

raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类

class ShortInputException(Exception):'''自定义的异常类'''def __init__(self, length, atleast):#super().__init__()self.length = lengthself.atleast = atleastdef main():try:s = input('请输入 --> ')if len(s) < 3:# raise引发一个你定义的异常raise ShortInputException(len(s), 3)except ShortInputException as result:#x这个变量被绑定到了错误的实例print('ShortInputException: 输入的长度是 %d,长度至少应是 %d'% (result.length, result.atleast))else:print('没有异常发生.')main()

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

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

相关文章

IPD-PDP产品开发流程-PDT产品开发计划Charter文档模板(word)2

书接上回&#xff0c;继续为大家分享PDT的产品开发计划Charter模板的主要内容。 据华研荟了解&#xff0c;大部分国内的企业在推行IPD的时候就直接像华为一样&#xff0c;把开发计划&#xff08;任务书&#xff09;叫做Charter&#xff0c;而不翻译为中文。其实这也是一种很好…

Roary结果中有基因组丢失怎么办

Roary结果里面有基因组没在结果里出现&#xff1f;&#xff1f;&#xff01; 看看是不是结果文件夹里有一个文件夹叫fixed_input_files 如果有&#xff0c;你可以检查一下自己提交的gff文件里是不是每个不同的ORF&#xff08;可以理解为基因&#xff09;都在最后一列ID有自己独…

超图iClient3DforCesium地形、影像、模型、在线影像交互示例

超图iClient3DforCesium地形、影像、模型、在线影像交互示例 描述示例代码 描述 数据源&#xff1a;基于iserver发布的三维场景(地形、影像、BIM模型) 在线arcgis影像 应用&#xff1a;目录树展示源数据列表、目录树控制源数据可视化结果显隐、BIM模型点选查询关联属性 示例代…

水果软件2024FL Studio21.3mac苹果中文版

FL STUDIO21发布&#xff0c;提供您一直在等待的出色工作流程功能。通过新效果、多个播放列表曲目选择和无所畏惧的撤消一切编辑&#xff0c;将您的音乐带入2024年。FL Studio21中文完整版是一个功能齐全、开放式架构的PC音乐创作和制作环境。它具有基于音乐音序器的图形用户界…

详细讲解node的ws中服务端的websocket.server的各种api

WebSocket是一种在单个TCP连接上进行全双工通信的协议。Node.js中的ws模块提供了WebSocket的实现&#xff0c;使得Node.js可以轻松地创建WebSocket服务器和客户端。 在ws模块中&#xff0c;WebSocket服务器由WebSocket.Server类实现。WebSocket.Server提供了一系列的API&#…

Anolis8/centos8/龙蜥8 升级glibc 2.30

背景&#xff1a; Anolis8/centos8/龙蜥8 系统自带的glibc是2.28版本&#xff0c;已经无法满足项目需要&#xff0c;所以将glibc版本升级到2.30。 编译升级安装 wget https://mirrors.aliyun.com/gnu/glibc/glibc-2.30.tar.gz tar -xvf glibc-2.30.tar.gz #查看glibc需要的g…

STL——list容器

目录 1.list基本概念 2.list构造函数 3.list赋值和交换 4.list大小操作 5.list插入和删除 6.list数据存取 7.list反转和排序 8.排序案例 1.list基本概念 功能&#xff1a;将数据进行链式存储。 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&…

SpringBoot-Shiro

Apache Shiro&#xff1a;https://shiro.apache.org/ 依赖 <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.4.1</version> </dependency>ShiroConfig.java Configuratio…

StringBuilder、StringBuffer

StringBuilder StringBuilder代表可变字符串对象&#xff0c;相当于是一个容器&#xff0c;它里面装的字符串是可以改变的&#xff0c;就是用来操作字符串的。好处&#xff1a;StringBuilder比String更适合做字符串的修该操作&#xff0c;效率会更高&#xff0c;代码也会更简洁…

*-over-slf4j 相关依赖包

*-over-slf4j 是 SLF4J 提供的一系列桥接依赖包&#xff0c;它们用于将其他日志框架的API调用重定向到SLF4J&#xff0c;这样就可以使用统一的SLF4J接口&#xff0c;并通过配置SLF4J的绑定器来选择实际的日志实现。以下是一些常见的 *-over-slf4j 桥接依赖包&#xff1a; jcl-o…

k8s中的namespace及创建方式

1. 什么是namespace&#xff08;名称空间&#xff09; 在 Kubernetes 中&#xff0c;Namespace&#xff08;名称空间&#xff09;是一种用于隔离和组织集群中资源的机制。通俗地说&#xff0c;它就像是在同一个 Kubernetes 集群中划分出来的一些虚拟区域&#xff0c;让你可以在…

Docker Compose容器编排实战

介绍 Docker Compose 是 Docker 官方提供的一种工具&#xff0c;用于定义和运行多个 Docker 容器的应用。它使用简单的 YAML 文件&#xff08;通常称为 docker-compose.yml&#xff09;来配置应用的服务&#xff0c;并使用单个命令即可创建、启动和停止整个应用。 官方文档&am…

计算机网络概述(上)——“计算机网络”

各位CSDN的uu们好呀&#xff0c;好久没有更新小雅兰的计算机网络的专栏啦&#xff0c;而且期末考试也要考计算机网络&#xff0c;所以&#xff0c;小雅兰就来写计算机网络的内容啦&#xff01;&#xff01;&#xff01;下面&#xff0c;让我们进入计算机网络概述的世界吧&#…

rust中的超时处理

rust中的超时处理 自从 tokio 1.0发布以来&#xff0c;rust的异步开发总算大势已定。尽管没达到标准库的速度&#xff0c;依然挡不住大家的热情。看编程排行榜&#xff0c;增加2倍的开发者。 既生瑜何生亮&#xff0c;感觉go就是小号的rust。 不废话了。背景&#xff1a;之前…

为什么要部署堡垒机

现如今网络安全越发受到重视&#xff0c;其中安全审计作为企业信息安全建设不可缺少的组成部分&#xff0c;逐渐受到用户的关注&#xff0c;是企业安全体系中的重要环节。同时&#xff0c;安全审计是事前预防、事中预警的有效风险控制手段&#xff0c;也是事后追溯的可靠证据来…

HarmonyOS引导页登陆页以及tabbar的代码说明 登陆页2

代码&#xff1a;这里的prompt.showToast是弹出提示&#xff0c;Extend(TextInput) 的功能是对TextInput做了公用的样式。isShowProgress是用来控制isShowProgress&#xff0c;出来一个等待效果 import prompt from ‘ohos.promptAction’; import router from ‘ohos.router…

Redis缓存雪崩、缓存击穿、缓存穿透

1. 什么是缓存雪崩 当我们提到缓存系统中的问题&#xff0c;缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效&#xff0c;导致瞬间大量的请求直接打到了数据库&#xff0c;可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中&#xff0c;…

基于SVM的用气量预测,基于支持向量机SVM的用气量预测

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接: 基于SVM的用气量预测,基于支持向量机SVM的用气量预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/8861…

【iptables】增加规则和删除规则

我们在另外一台机器上&#xff0c;使用ping命令&#xff0c;向当前机器发送报文&#xff0c;如下图所示&#xff0c;ping命令可以得到回应&#xff0c;证明ping命令发送的报文已经正常的发送到了防火墙所在的主机&#xff0c;ping命令所在机器IP地址为31.133&#xff08;黑色&a…

前后端分离项目解决跨域问题

基于Vue的前后端分离的项目中解决跨域问题 一、前端反向代理解决跨域 在环境配置文件.env.development/staging/production中配置 请求路径的前缀 VUE_APP_BASE_API /dev-api然后在request.js中封装请求方法中通过baseURL引用公共URL axios.defaults.headers[Content-Type…