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

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

新手常見Python錯(cuò)誤及異常解決處理方案

瀏覽:107日期:2022-07-20 15:18:31

寫Python代碼的小伙伴不可避免地會(huì)遇到代碼執(zhí)行錯(cuò)誤和異常,這次就來詳細(xì)且不失通俗地總結(jié)一下python中的錯(cuò)誤和異常。

先拋出兩個(gè)問題:

什么是Python錯(cuò)誤和異常?

如何處理Python錯(cuò)誤和異常?

1.語法錯(cuò)誤可能是初學(xué)者最常遇到的,如下面熟悉的畫面:

SyntaxError: invalid syntax語法錯(cuò)誤又稱解析錯(cuò)誤,又有老哥會(huì)問什么是解析錯(cuò)誤?簡單來說是基本語法結(jié)構(gòu)寫錯(cuò)了,如:多任務(wù)寫成一行、for循環(huán)沒加‘:’等。如下:

新手常見Python錯(cuò)誤及異常解決處理方案

多任務(wù)寫成一行

新手常見Python錯(cuò)誤及異常解決處理方案

for循環(huán)沒加‘:’

上面示例可以看到,針對語法錯(cuò)誤,python解析器會(huì)輸出錯(cuò)誤的那一行,并且在最先找到的錯(cuò)誤的位置標(biāo)記了一個(gè)箭頭。

 熟悉python語法后,可以避免語法錯(cuò)誤,但是代碼常會(huì)發(fā)生異常(Exception)。還是兩個(gè)問題:

2.異常是什么?

 異常和語法錯(cuò)誤有什么區(qū)別呢?

關(guān)于異常,舉個(gè)例子:

這行代碼出現(xiàn)異常,因?yàn)镻rint的p應(yīng)該小寫:

新手常見Python錯(cuò)誤及異常解決處理方案

python拋出異常類型:NameError,即名字錯(cuò)誤。

其它異常的例子:

新手常見Python錯(cuò)誤及異常解決處理方案

可以看到,異常有不同的類型,發(fā)生異常后,其類型名稱會(huì)被打印出來。上述這些都是python內(nèi)置的異常,用戶也可以自定義異常,這里不做贅述。

3、try...except...語句

有python編程經(jīng)驗(yàn)的人會(huì)知道,python里用try...except...語句來處理異常情況。

先看個(gè)異常處理的示例:

新手常見Python錯(cuò)誤及異常解決處理方案

看,我們完美地捕捉到了程序中的異常。

結(jié)合上面的示例,處理異常的規(guī)則是:把執(zhí)行的語句放在 try 代碼塊中,將錯(cuò)誤處理器代碼放置在 except 代碼塊中,except會(huì)引發(fā)ZeroDivisionError異常來提醒Coder,這段代碼的錯(cuò)誤是零不能作為被除數(shù)。

except后面也可以不添加異常類型,會(huì)捕獲所有出現(xiàn)的異常:

新手常見Python錯(cuò)誤及異常解決處理方案

我們可以把try...except...原理歸納為幾個(gè)要點(diǎn):

首先,執(zhí)行 try 子句 (try 和 except 關(guān)鍵字之間的(多行)語句) 如果沒有異常發(fā)生,則跳過 except 子句 并完成 try 語句的執(zhí)行 如果在執(zhí)行try 子句時(shí)發(fā)生了異常,則跳過該子句中剩下的部分。然后,如果異常的類型和 except 關(guān)鍵字后面的異常匹配,則執(zhí)行 except 子句 ,然后繼續(xù)執(zhí)行 try 語句之后的代碼

如果發(fā)生的異常和 except 子句中指定的異常不匹配,則將其傳遞到外部的 try 語句中;如果沒有找到處理程序,則它是一個(gè)未處理異常,執(zhí)行將停止并顯示如上所示的消息

4、多個(gè)except子句

上面的try...except...語句只處理了一種異常,如果我想多匹配幾個(gè)異常類型,怎么辦呢?

這里就需要多個(gè)except子句來幫忙了,舉個(gè)例子:

新手常見Python錯(cuò)誤及異常解決處理方案

引發(fā)異常ZeroDivisionError

新手常見Python錯(cuò)誤及異常解決處理方案

引發(fā)異常TypeError

上面我們用了兩個(gè)except,匹配ZeroDivisionError和TypeError這兩種異常,第一個(gè)代碼捕捉到了ZeroDivisionError,第二段代碼捕捉到了TypeError異常,一個(gè)都沒有漏。當(dāng)然你還可以這樣寫:

新手常見Python錯(cuò)誤及異常解決處理方案

也就是用一個(gè)except捕捉多個(gè)異常,異常類型放到except后面的元組里。

綜上,對于多個(gè)except子句,可以總結(jié)為:

一個(gè)try語句可能有多個(gè) except 子句,以指定不同異常的處理程序

最多會(huì)執(zhí)行一個(gè)處理程序

處理程序只處理相應(yīng)的 try 子句中發(fā)生的異常,而不處理同一try語句內(nèi)其他處理程序中的異常

一個(gè) except 子句可以將多個(gè)異常命名為帶括號的元組

5、try...except Exception as e語句

我們常常會(huì)看看這樣的寫法:

try...exceptException as e其中的e代表什么意思呢?

再舉個(gè)例子:

新手常見Python錯(cuò)誤及異常解決處理方案

通過示例可以知道,e輸出了異常類型。也就是說,Exception匹配了所有異常,把異常名稱賦給了e。

當(dāng)然這里不一定非得是e,你可以取任何的變量名,只是約定俗稱這樣寫罷了。

6、try...except...finally語句

try...except...finally語句可能并不那么常見,但它是非常有用的。

如果說,我想用python打開了一個(gè)txt文件,然后讀取,寫入,最后關(guān)閉文件對象。這是一套常規(guī)流程,如果我想捕捉代碼過程中的異常,又要保證無論是否有異常,最后都必須要關(guān)閉文件。這時(shí)候就用到finally,看下面例子:

新手常見Python錯(cuò)誤及異常解決處理方案

上面代碼,既捕捉到了異常,最終又關(guān)閉了文件對象。

finaly的作用是,無論except是否捕捉到異常,

finally后面的代碼都會(huì)執(zhí)行,try獲取了資源,

finally釋放資源,保證了收尾工作。

7、with...語句

with...語句是try-finally語句的簡寫,可以替代try-finally的功能。

新手常見Python錯(cuò)誤及異常解決處理方案

表達(dá)式open(’poem.txt’)返回是一個(gè)_io.TextIOWrapper 類型的變量賦給f。

在with語句塊中就可以使用這個(gè)變量操作文件。

執(zhí)行with這個(gè)結(jié)構(gòu)之后,f會(huì)自動(dòng)關(guān)閉,相當(dāng)于自帶了一個(gè)finally。

8、總結(jié)

本文詳細(xì)且清晰地講解了Python中錯(cuò)誤和異常的概念及其處理方式,

通過具體案例展示try...except、try...finally、with...等句式的具體用法,

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 济南铝方通-济南铝方通价格-济南方通厂家-山东鲁方通建材有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 云南成考网_云南成人高考报名网| 广东教师资格网-广东教师资格证考试网 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 外贸资讯网 - 洞悉全球贸易,把握市场先机 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 济宁工业提升门|济宁电动防火门|济宁快速堆积门-济宁市统一电动门有限公司 | 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 膜结构停车棚-自行车棚-膜结构汽车棚加工安装厂家幸福膜结构 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 耐高温电缆厂家-远洋高温电缆| 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 电竞馆加盟,沈阳网吧加盟费用选择嘉棋电竞_售后服务一体化 |