首页 > 编程语言 >python3异常处理

python3异常处理

时间:2023-05-28 09:56:40浏览次数:45  
标签:__ 处理 代码 except finally 类型 异常 python3

1、语法错误和异常
语法错误是在代码执行前可以检测的,由于不符合代码语法规范引起的
异常指程序运行过程中导致的超出预期处理能力的情况

常见的异常:

0作为除数
未定义的对象被直接使用,比如参与运算或者调用其属性和方法
str类型直接和非str类型相加
输入输出与系统异常等
异常有两种处理方式:直接捕获进行处理,将其抛出由上级(调用异常代码)进行处理

2、捕获
(1)完整结构

try:
	执行代码
except:
    发生异常时执行的代码
else:
    没有异常时执行的代码
finally:
    无论是否发生异常时执行的代码

else和finally结构是可以省略的
finally结构实际可以考虑直接放在外部,这里主要是为了逻辑阐述的强迫性,保持功能的完整
一般关闭资源之类的操作会习惯放在finally在

(2)except

try:
    pass
except OSError as err
	print("OS error: {0}".format(err))
except ValueError:
    pass
except (RuntimeError, TypeError, NameError):
    pass
except:
    pass

try后可以跟多个except结构,从上到下匹配,匹配到后即执行,不再匹配其它except结构,而是考虑except之和else或者finally结构
一般将描述越详细的异常类型放在前面,将描述越宽广的类型放在后面
如果except后没有跟异常类型,表示匹配所有异常类型,一般放在except的末尾
except … as …结构为异常取一个别名,一般是考虑到异常类型会比较详细显得冗长,起一个简短的别名,方便在except内部使用
如果多个异常的处理方法一致,可以在一个except后添加一个元组,在元组中声明并列的多个异常类型

3、抛出
使用关键字raise,其后跟一个Exception的对象或者其类型的子类型的对象,完成抛出

if x > 5:
	raise Exception('这里发生了异常,x>5')

一个方法中存在抛出异常的行为,则调用该方法的代码需要进行捕获,捕获的类型为抛出时创建的异常类型

4、自定义异常

class MyError(Exception):
    def __init__(self, value):
        self.value = value
	def __str__(self):
		return repr(self.value)

一般自定义异常,就是创建一个能够显示异常类型的类名的类,不需要做其它操作
其作用就是记录异常类型和异常信息,在传递过程中方便被调用查看

标签:__,处理,代码,except,finally,类型,异常,python3
From: https://www.cnblogs.com/wd404/p/17320298.html

相关文章

  • python3 \r和\n
    1、说明\n:换行符,跳到下一行\r:回车,跳到当前行的首部,\r会占据一个字符长度windows下enter是\r\n; linux/unix下是\n; mac下是\r网络协议的头部字段间隔也是\r\n2、比较分析print('abc123zzz')print('abc\n123\rzzz\n1234\r',end='')print('000')""&quo......
  • python3反射
    脚本语言系列之Python|Python反射-知乎(zhihu.com)1、基本使用hasattr(obj,name_str)判断输入的name_str字符串在对象obj中是否存在(属性或方法),存在返回True,否则返回False。getattr(obj,name_str)将按照输入的name_str字符串在对象obj中查找,如找到同名属性,则返回该......
  • python3多线程
    1、线程和进程计算机资源,指的是cpu计算资源、内存资源、接口读写资源等。进程:计算机中用于分配资源的最小个体。不同进程之间并不共享内存。线程:是进程内部的资源分配对象,一个进程最少会有一个线程。同一进程下的不同线程可以共享内存。2、并行和并发并行:同一时间段,交替前行。并......
  • python3函数
    1、介绍def函数名(参数列表):函数体在python中,可以直接在.py文件中,通过关键字def创建函数。2、函数与解释型python是解释型编程语言,从上到下解析,所以在调用函数时,该函数必须已经被声明。如果是在函数B声明之前,py文件中直接调用B,那么pycharm会提示异常如果是在函数B声明......
  • kubeadm极速部署Kubernetes,教你如何轻松处理容器运行瓶颈(Docker丨容器化技术丨DevOps
    kubeadm极速部署Kubernetes1.25版本集群前言随着Kubernetes的普及,快速部署和管理Kubernetes集群已成为容器领域的关键技能之一。本文将介绍使用kubeadm工具部署Kubernetes集群的方法,为您提供一个简单且高效的解决方案。不再需要自行构建集群,通过使用本文的方法,您将能够在最短的时......
  • NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据|附代码数据
    从上图可以看出不同地区留言板的情感倾向分布,总的来说,负面情感留言数目和积极情感相差不多,负面情感留言较多,占比46%,积极情感留言占比42%,中立情感的留言占比11%。从地区来看,活跃在各大媒体的“朝阳区群众”留言数目也是最多的,其次是海淀区,昌平区。因此,从情感分布来看大部分留言还......
  • 音频处理数据增强实验与代码分享
    对音频(audio)信号做数据增强(DataAugmentation)可以有多重方式,这里通过sox库、soundfile库、librosa库进行实验,希望可以帮助到有需要的人。可用于深度学习音频处理实验的数据预处理。音高变换增强(PitchShiftAugmentation)音高变化增强,是围绕频率轴的±5%范围内的随机滚动。环绕式......
  • https:imnks.com369.html hosts处理
    https:imnks.com369.htmlhosts处理sudo-i#手动筛选的ip,2022.11.1更新curlhttp://code.imnks.com/hosts.sh|bash#自动筛选的ipcurlhttp://code.imnks.com/hosts-auto.sh|bash​​......
  • 记一次redis数据库RDB内存事故排查处理
    事故表现:redis状态正常,但客户端不能使用,定位日志结论,redis内存申请不通过,导致中断用户操作解决办法1.解锁相关配置(不能解决根本问题,根本原因来源于开发使用姿势不对)两种解决办法一.打开系统层始终同意分配内存(不建议)编辑文件/etc/sysctl.conf添加vm.overcommit_memory=1内核参......
  • drf——全局处理异常、接口文档、jwt介绍、based64编码与解码
    全局异常处理原理#对于前端来讲,后端即便报错,也要返回统一的格式,前端便于处理{code:999,msg:'系统异常,请联系系统管理员'}#只要三大认证,视图类的方法出了异常,都会执行一个函数: rest_framework.viewsimportexception_handler#drf只要出了异常就会执行这是drf的配置文件......