电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳解python中的異常捕獲

瀏覽:2日期:2022-07-02 10:06:38
異常

異常是程序發(fā)生錯(cuò)誤的信號(hào),程序一旦出錯(cuò)就會(huì)拋出異常,程序的運(yùn)行隨之終止。

# 異常處理的三個(gè)特征- 異常的追蹤信息- 異常的類型- 異常的內(nèi)容

捕獲異常的目的:為了增強(qiáng)程序的健壯性,即便程序運(yùn)行過(guò)程中出錯(cuò),也不要終止程序,而是捕獲異常并處理,將出錯(cuò)信息記錄到日志內(nèi)。

# 語(yǔ)法上錯(cuò)誤SyntaxError- 處理方式1:必須在程序運(yùn)行前就改正# 邏輯上的錯(cuò)誤- 錯(cuò)誤發(fā)生的條件是可以預(yù)知的 --> if判斷- 錯(cuò)誤發(fā)生的條件是無(wú)法預(yù)知的 --> 異常捕獲 try

本來(lái)程序一旦出現(xiàn)異常就整體結(jié)束掉了,有了異常處理以后,在被檢測(cè)的代碼塊出現(xiàn)異常時(shí),被檢測(cè)的代碼塊中異常發(fā)生位置之后的代碼將不會(huì)執(zhí)行,取而代之的是執(zhí)行匹配異常的except子代碼塊,其余代碼均正常運(yùn)行。

異常捕獲

當(dāng)被檢測(cè)的代碼塊中有可能觸發(fā)不同類型的異常時(shí),針對(duì)不同類型的異常:

如果我們想分別用不同的邏輯處理,需要用到多分支的except(類似于多分支的elif,從上到下依次匹配,匹配成功一次便不再匹配其他)

try: # 有可能會(huì)拋出異常的代碼 子代碼1 子代碼2 子代碼3except 異常類型1 as e:# as語(yǔ)法將異常類型的值賦值給變量e,這樣我們通過(guò)打印e便可以知道錯(cuò)誤的原因 passexcept 異常類型2 as e: pass...else: 如果被檢測(cè)的子代碼塊沒(méi)有異常發(fā)生,則會(huì)執(zhí)行else的子代碼finally: 無(wú)論被檢測(cè)的子代碼塊有無(wú)異常發(fā)生,都會(huì)執(zhí)行finally的子代碼 # try不能和else單獨(dú)連用# try 和 finally 連用,就算出了異常也先執(zhí)行finally下代碼塊再拋出異常

如果我們想多種類型的異常統(tǒng)一用一種邏輯處理,可以將多個(gè)異常放到一個(gè)元組內(nèi),用一個(gè)except匹配。

try: 被檢測(cè)的代碼塊except (NameError,IndexError,TypeError): 觸發(fā)NameError或IndexError或TypeError時(shí)對(duì)應(yīng)的處理邏輯

如果我們想捕獲所有異常并用一種邏輯處理,Python提供了一個(gè)萬(wàn)能異常類型 Exception

try: 被檢測(cè)的代碼塊except NameError: 觸發(fā)NameError時(shí)對(duì)應(yīng)的處理邏輯except IndexError: 觸發(fā)IndexError時(shí)對(duì)應(yīng)的處理邏輯except Exception: 其他類型的異常統(tǒng)一用此處的邏輯處理

在不符合Python解釋器的語(yǔ)法或邏輯規(guī)則時(shí),是由Python解釋器主動(dòng)觸發(fā)的各種類型的異常,而對(duì)于違反程序員自定制的各類規(guī)則,則需要由程序員自己來(lái)明確地觸發(fā)異常,這就用到了raise語(yǔ)句,raise后必須是一個(gè)異常的類或者是異常的實(shí)例

class Student: def __init__(self,name,age): if not isinstance(name,str): raise TypeError(’name must be str’) if not isinstance(age,int): raise TypeError(’age must be int’) self.name=name self.age=agestu1=Student(4573,18) # TypeError: name must be strstu2=Student(’egon’,’18’) # TypeError: age must be int

在內(nèi)置異常不夠用的情況下,我們可以通過(guò)繼承內(nèi)置的異常類來(lái)自定義異常類

class PoolEmptyError(Exception): # 可以通過(guò)繼承Exception來(lái)定義一個(gè)全新的異常 def __init__(self,value=’The proxy source is exhausted’): # 可以定制初始化方法 super(PoolEmptyError,self).__init__() self.value=value def __str__(self): # 可以定義該方法用來(lái)定制觸發(fā)異常時(shí)打印異常值的格式 return ’< %s >’ %self.valueclass NetworkIOError(IOError): # 也可以在特定異常的基礎(chǔ)上擴(kuò)展一個(gè)相關(guān)的異常 passraise PoolEmptyError # __main__.PoolEmptyError: < The proxy source is exhausted >raise NetworkIOError(’連接被拒絕’) # __main__.NetworkIOError: 連接被拒絕

最后,Python還提供了一個(gè)斷言語(yǔ)句assert expression,斷定表達(dá)式expression成立,否則觸發(fā)異常AssertionError,與raise-if-not的語(yǔ)義相同,如下

age=’18’# 若表達(dá)式isinstance(age,int)返回值為False則觸發(fā)異常AssertionErrorassert isinstance(age,int)# 等同于if not isinstance(age,int): raise AssertionError

在了解了異常處理機(jī)制后,本著提高程序容錯(cuò)性和可靠性的目的,讀者可能會(huì)錯(cuò)誤地認(rèn)為應(yīng)該盡可能多地為程序加上try...except...,這其是在過(guò)度消費(fèi)程序的可讀性,因?yàn)閠ry...except本來(lái)就是你附加給程序的一種額外的邏輯,與你的主要工作是沒(méi)有多大關(guān)系的。所以不要隨便使用異常捕獲,只用當(dāng)當(dāng)異常發(fā)生時(shí)不可預(yù)知時(shí),或萬(wàn)不得已時(shí)才使用異常捕獲。

以上就是詳解python中的異常捕獲的詳細(xì)內(nèi)容,更多關(guān)于python 異常捕獲的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 山东艾德实业有限公司| 污水提升器,污水提升泵,污水提升装置-德国泽德(zehnder)水泵系统有限公司 | 真空吸污车_高压清洗车厂家-程力专用汽车股份有限公司官网 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 精密模具-双色注塑模具加工-深圳铭洋宇通 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 手术示教系统-数字化手术室系统-林之硕医疗云智能视频平台 | 采暖炉_取暖炉_生物质颗粒锅炉_颗粒壁炉_厂家加盟批发_烟台蓝澳采暖设备有限公司 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 成都装修公司-成都装修设计公司推荐-成都朗煜装饰公司 | 换链神器官网-友情链接交换、购买交易于一体的站长平台 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 飞利浦LED体育场灯具-吸顶式油站灯-飞利浦LED罩棚灯-佛山嘉耀照明有限公司 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 咖啡加盟-咖啡店加盟-咖啡西餐厅加盟-塞纳左岸咖啡西餐厅官网 | 窖井盖锯圆机_锯圆机金刚石锯片-无锡茂达金刚石有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 上海三信|ph计|酸度计|电导率仪-艾科仪器 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 |