5. Python中的异常处理和自定义异常问题
创始人
2025-06-01 19:12:51

1. 说明:

自己写的代码保证万无一失有点难度,代码报出异常后,对其进行正确的处理有助于提高开发产品的稳定性和灵活性。

2. try…except 处理异常

这个是在python当中用来处理异常的,在try…except中的代码会正常执行,如果没有出现异常则跳过except代码块并结束try-except,如果try-except中的某一句代码出现了问题异常,剩余代码停止执行,如果出现的异常与except所指定的一致,则执行except中的代码块,异常处理结束整个应用程序继续执行,如果出现的异常与except中指定的不符合,那么则跳出try语句,程序继续抛出异常并终止执行代码,同时也会结合else或者finally来处理,简单使用如下:

nums = [1, 2, 3, 4]try:print(nums.encode('utf-8'))print('123')
except NameError:print('发生特定异常情况')
except (AttributeError, NameError, KeyError):  # 接收多种异常情况print('发生多种异常情况')
except:print('接收所有的异常情况')
else:print('上面的代码如果没有异常,则执行这里的代码')
finally:print('不管上面有没有异常,都会执行的代码')

3. 获取异常相关信息

有时需要知道异常报错的类型,才能根据类型进行不同的处理。获取异常信息的方式可分为两种:
第一种:使用Exception类本身

nums = [1, 2, 3, 4]try:print(nums.encode('utf-8'))print('123')
except Exception as e:print(e.args)  # 输出异常的简要信息print(type(e).__name__)  # 输出异常的类型名称

输出如下,可看到输出的信息是比较简单的,不过这种方法可以获得异常的类型名
在这里插入图片描述
第二种:使用traceback包
这种方式可输出异常的详细信息,包括出错代码在哪个文件的哪一行,异常类型等

import tracebacknums = [1, 2, 3, 4]try:print(nums.encode('utf-8'))print('123')
except:print(traceback.format_exc())

输出如下:
在这里插入图片描述

4. 主动抛出异常

可以使用 raise 语句来抛出异常,该语句后面需要带一个对象,该对象必须是派生自 Exception。

nums = [1, 2, 3, 4]try:num = 5if num in nums:print(num)else:myException = Exception("变量不在列表内...")	# 创建一个异常对象raise myException	# 主动抛出异常
except Exception as err:	# 接受异常,err的内容就是错误原因print(err)	# 输出异常信息(或者针对异常做其他处理)

5. 自定义异常类

第一:一定要继承Exception
第二:要重新定义 init 和 __str__函数

nums = [1, 2, 3, 4]# 继承异常基类 Exception
class myError(Exception):# 下面两个魔法函数是必须要写的# __init__函数负责类变量的初始化(一般是接报错的内容)def __init__(self, message):self.message = message# __str__函数负责根据类对象名称,返回异常信息def __str__(self):return "出现错误:" + self.messagetry:num = 5if num in nums:print(num)else:myerror = myError("数字不在列表内")  # 创建一个自定义异常类型的变量raise myerror  # 手动抛出异常
except Exception as err:print(err)

持续更新中,请大家多多关注…

相关内容

热门资讯

AGI的不归之途 AGI,即通用人工智能,正踏上一条不归之途。它犹如一艘在未知海域航行的巨轮,不断探索着智慧的边界。一...
欧盟起草对俄第18轮制裁措施 ... 来源:新华网新华社布鲁塞尔6月2日电(记者张兆卿)欧盟委员会2日发表声明说,欧盟正制定针对俄罗斯的第...
原创 心... 在现代商业环境中,烘焙行业作为食品产业的一个重要分支,正快速发展,面包作为其核心产品,备受瞩目。如今...
首次披露:五台山王黎明,已被查... 政事儿微信公号消息,据山西省纪委监委6月2日消息:日前,经山西省委批准,山西省纪委监委对五台山风景名...
深夜突发!关税升级,特朗普似乎... 当地时间6月2日,美股三大指数集体收涨,道指涨0.08%,纳指涨0.67%,标普500指数涨0.41...
年内创业板首批IPO获受理 创... 5月30日,陕西旅游、三瑞智能、宏明电子、大亚股份4家公司IPO获得受理,创下2025年以来单日受理...
国金证券:创新药密集获批 后续... 智通财经APP获悉,国金证券发布研报称,国家药监局批准11 款全新创新药的上市申请,另外还有2款创新...
美国房地产经纪公司Redfin... 观点网讯:6月2日,美国房地产经纪公司Redfin最新统计数据显示,美国待售房屋总价值高达6980亿...
移出经营异常名录不留痕 监管有... 汪昌莲近日,市场监管总局印发《关于贯彻落实有关事项的通知》,对已经移出经营异常名录的经营主体,不再公...
美股三大指数飘红,白银期货飙涨...   中新经纬6月3日电 美股三大指数低开,盘中走势转强,集体收红。道指收涨0.08%,纳指涨0.67...
特朗普升级贸易战 欧盟警告:可... 财联社6月3日讯(编辑 夏军雄)当地时间周一(6月2日),欧盟警告称,如果美国总统特朗普兑现其最新的...
每经实探|网红家装企业“住范儿... “(端午节)放假前,每天有百把号人来找(住范儿)呢,欠了不少钱。”6月1日下午,《每日经济新闻》记者...
BD交易大爆发,今年总额已超4... 一笔笔BD(business development,业务发展)交易订单让中国创新药又香了起来。据澎...
美股零日期权大热!特朗普交易再... 刚过去的5月,在特朗普政府推迟贸易谈判期限,并与多个主要贸易伙伴展开积极对话后,市场风险偏好有所改观...
海昌海洋公园即将易主?祥源集团... 6月2日,海昌海洋公园控股有限公司(海昌海洋公园,02255.HK)发布公告,由祥源集团间接全资控制...
鲍威尔出席美联储国际金融司活动... 美联储主席鲍威尔(Jerome Powell)周一在美联储国际金融司(IF)成立75周年活动上发表讲...
安联El Erian:美联储进... 知名投资管理公司安联(Allianz)首席经济顾问Mohamed El-Erian近日在《金融时报》...
国产豪车崩盘预警?亏损18亿,... 端午时节,华为发布了尊界S800,价格70.1-101.8W。一石激起千层浪,这个价格引起了巨大的争...
见证历史!新一轮货币战争在路上... 美元信誉持续受损。无论是沙特、还是俄罗斯,越来越多的国家对美国的36万亿美元债务表现出担忧。现在,中...
从一面之恩到千亿帝国CEO,安... 近日,吉利汽车管理层大调整引发行业聚焦。在吉利一季度财报发布的当天,吉利控股集团宣布重大人事调整:极...
智岩科技启动上市辅导 今年10...   近期,深圳智岩科技股份有限公司(以下简称“智岩科技”)正式启动上市辅导,辅导机构为中金公司。智岩...
银发跑者越跑越快,还最能“买买... 文/段修健近日,国家体育总局体科所中国体育经济研究中心发布《中国路跑人群消费与赛事经济发展趋势与特征...
【美股】美股走“V”全线收涨 ... 6月2日,美股走V全线收涨。道指涨0.08%,报42305.48点,收复早盘约1%跌幅并录得三连涨;...
涉嫌虚假记载细节曝光,锦富技术... 锦富技术5月30日晚公告称,公司当日收到中国证监会下发的《行政处罚事先告知书》。锦富技术披露的202...
6.3股市早8点丨三天假发生了... 三天假发生了啥事?股市早8点 老沙自媒体2025年6月3日(周二)每日大道正道消息▊美股小涨北京时间...
绿通科技:拟现金收购大摩半导体... 【绿通科技筹划收购大摩半导体不低于51%股权】6月2日晚间,绿通科技公告,筹划现金收购江苏大摩半导体...
股市必读:爱博医疗(68805... 截至2025年5月30日收盘,爱博医疗(688050)报收于71.41元,下跌1.76%,换手率1....
销售会“提问”,再冷淡的客户,... 回复“9”限时领《9套销售话术资料包》 作者:Dora 在销售咨询过程中,“高效提问”不仅是获取客户...
原创 德... 2025年2月24日,恰逢俄乌冲突爆发三周年,德国也于前一天举行了新一轮的议会选举。在过去的三年中,...
明天沪主板新股海阳科技申购!聚... 明天,沪主板将迎来一家新股申购! 格隆汇获悉,海阳科技(603382)于6月3日申购,发行价格为11...