小編寫(xiě)這篇文章的一個(gè)主要目的,就是來(lái)給大家去做一個(gè)解答,解答的內(nèi)容主要是Python常見(jiàn)的一些bug和異常問(wèn)題,那么,遇到這些問(wèn)題的時(shí)候,我們需要找到好辦法去進(jìn)行處理。那么,小編這邊就給大家做了一個(gè)總結(jié),總結(jié)常見(jiàn)的異常問(wèn)題,大家好好閱讀哦。
異常處理介紹
在實(shí)際的開(kāi)發(fā)中,我們經(jīng)常遇到一些報(bào)錯(cuò)的例子,在pycharm的顯示頁(yè)面下,當(dāng)我們看到一串串的紅色的英文字母的時(shí)候,就是出現(xiàn)異常,這個(gè)時(shí)候如果英文好一點(diǎn)的童鞋,就可以按照它的提示,自己去解決。但是英文是很多的童鞋的軟肋,不過(guò)你也不要擔(dān)心,這個(gè)時(shí)候你就需要有一個(gè)翻譯神器,我使用的是網(wǎng)易有道詞典,不過(guò)有時(shí)候我們還是會(huì)遇到一些比較生僻的表達(dá),所以本期文章我們就一起來(lái)看看關(guān)于Python實(shí)際開(kāi)發(fā)過(guò)程中的一些常見(jiàn)報(bào)錯(cuò)和解決方法。
語(yǔ)法報(bào)錯(cuò)
代碼拼寫(xiě)錯(cuò)誤,一般在pycharm里面出現(xiàn)了錯(cuò)誤的拼寫(xiě),就會(huì)自動(dòng)顯示出來(lái),在它的下面有紅色的波浪線,還有就是我們?cè)谑褂么a的拼寫(xiě)的時(shí)候,有一個(gè)技巧,它會(huì)自動(dòng)補(bǔ)全,我們根據(jù)自己需要的代碼塊,按下“enter”鍵就可以實(shí)現(xiàn)快速拼接,這樣極大地提高了我們寫(xiě)代碼的速度和效率。
還有就會(huì)一些縮進(jìn)錯(cuò)誤,沒(méi)有打冒號(hào),這個(gè)是初學(xué)者經(jīng)常遇到的一些問(wèn)題,在之前的pycharm版本里面沒(méi)有提示錯(cuò)誤的這個(gè)功能,后面升級(jí)后就會(huì)有。在這里我還要提醒一個(gè),經(jīng)常有人會(huì)問(wèn),我好像沒(méi)有寫(xiě)錯(cuò)啊,但是就是不能運(yùn)行,這個(gè)時(shí)候就要檢查自己輸入法是不是英文輸入法,除了用引號(hào)括起來(lái)的里面可以中文,其他的都不可以!
異常處理
出現(xiàn)異常的時(shí)候我們不知道自己的哪一部分寫(xiě)錯(cuò)了,難道還要從全文查找嗎,不必了!我們直接點(diǎn)擊在報(bào)錯(cuò)上面的那個(gè)鏈接,就會(huì)自動(dòng)調(diào)到可能錯(cuò)誤的代碼處。
下面我看看一些常見(jiàn)的異常解釋?zhuān)?/p>
解決方法
我們?cè)谧约簩?xiě)代碼做項(xiàng)目的時(shí)候,我們發(fā)現(xiàn)我們一個(gè)完整的項(xiàng)目有很多的代碼塊,一旦我們第一行代碼報(bào)錯(cuò)了,我們后面的就不能運(yùn)行了,如果這樣的話,實(shí)際商業(yè)應(yīng)用的時(shí)候,是非常的不現(xiàn)實(shí)的,所以我們就有了異常處理的方法。
try except try: <語(yǔ)句>#運(yùn)行別的代碼 except<名字>: <語(yǔ)句>#如果在try部份引發(fā)了'name'異常 except<名字>,<數(shù)據(jù)>: <語(yǔ)句>#如果引發(fā)了'name'異常,獲得附加的數(shù)據(jù) else:
<語(yǔ)句>#如果沒(méi)有異常發(fā)生
如果try語(yǔ)句下面出現(xiàn)了異常,程序就會(huì)去運(yùn)行except下面的代碼去執(zhí)行相關(guān)的操作,或者是捕獲異常
try: a=str("王小王")+1233 print(a) except: print("出現(xiàn)異常語(yǔ)法錯(cuò)誤!")
這里本來(lái)就會(huì)報(bào)錯(cuò),但是我們這個(gè)語(yǔ)句,我們要知道int和str是不可以進(jìn)行運(yùn)算的。那么我們?cè)诓东@異常的時(shí)候,我們就會(huì)發(fā)現(xiàn)他是TypeError,對(duì)類(lèi)型無(wú)效的操作!
try except else;
當(dāng)我們這個(gè)程序沒(méi)有錯(cuò)誤的時(shí)候,它會(huì)自動(dòng)執(zhí)行else語(yǔ)句,而且不會(huì)運(yùn)行except下面的補(bǔ)充代碼,這樣就有了一個(gè)較好的解決方法。
try except finally:
當(dāng)我們想要無(wú)論是否有異常出現(xiàn)我們都要去打印出來(lái),這個(gè)時(shí)候我們就可以運(yùn)行這個(gè)語(yǔ)句了。這個(gè)語(yǔ)句可以在finally下面加上一些必要的操作,比如我們?cè)谶M(jìn)行文件操作處理的時(shí)候,必須要關(guān)閉文件,這個(gè)時(shí)候就可以使用它。
try: a=str("王小王")+1233 print(a) except TypeError: print("出現(xiàn)異常語(yǔ)法錯(cuò)誤!") finally: print("123")
拋出異常
使用raise拋出異常。
try: a=str("王小王")+1233 print(a) except TypeError: print("出現(xiàn)異常語(yǔ)法錯(cuò)誤!") finally: raise TypeError '''拋出異常''' '''raise raise[異常類(lèi)型[,arg[,traceback]]] 其中后面兩個(gè)參數(shù)都是可選參數(shù) '''
'''assert''' ''' 這個(gè)其實(shí)就是raise的簡(jiǎn)化,當(dāng)assert后面的語(yǔ)句為假的時(shí)候,這個(gè)時(shí)候就會(huì)異常處理,為真就會(huì)有正確的運(yùn)行 ''' def test(): for i in range(3): try: assert i<2 except AssertionError: print("拋出一個(gè)異常!") print(i) print("執(zhí)行完畢!") test()
自定義異常
'''自定義異常 在定義異常類(lèi)的時(shí)候,我們需要繼承Exception這個(gè)類(lèi),然后自己再去定義一些東西 ''' class RangeError(Exception): def __init__(self,value): self.value=value def __str__(self):#重載方法__str__() return self.value raise RangeError("Rang錯(cuò)誤!!!!!") 其他內(nèi)置函數(shù) testmod() testfile()
到此為止,這篇文章就給大家介紹到這里了,希望可以給大家?guī)?lái)更多幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/128302.html
摘要:使用中文替代中文中文編碼中文編碼中有以上兩種聲明字符串變量的方式,它們的主要區(qū)別是編碼格式的不同,其中,的編碼格式和文件聲明的編碼格式一致,而的編碼格式則是。 字符串是Python中最常用的數(shù)據(jù)類(lèi)型,而且很多時(shí)候你會(huì)用到一些不屬于標(biāo)準(zhǔn)ASCII字符集的字符,這時(shí)候代碼就很可能拋出UnicodeDecodeError: ascii codec cant decode byte 0xc4 ...
摘要:笨辦法學(xué)第版結(jié)構(gòu)非常簡(jiǎn)單,共包括個(gè)習(xí)題,其中個(gè)覆蓋了輸入輸出變量和函數(shù)三個(gè)主題,另外個(gè)覆蓋了一些比較高級(jí)的話題,如條件判斷循環(huán)類(lèi)和對(duì)象代碼測(cè)試及項(xiàng)目的實(shí)現(xiàn)等。最后只想說(shuō),學(xué)習(xí)不會(huì)辜負(fù)任何人,笨辦法學(xué) 內(nèi)容簡(jiǎn)介 《笨辦法學(xué)Python(第3版)》是一本Python入門(mén)書(shū)籍,適合對(duì)計(jì)...
摘要:另一種常見(jiàn)錯(cuò)誤是邏輯錯(cuò)誤。當(dāng)檢測(cè)到一個(gè)錯(cuò)誤時(shí),解釋器就無(wú)法繼續(xù)執(zhí)行下去,于是拋出提示信息,即為異常。 錯(cuò)誤 >>> for i in range(10) File , line 1 for i in range(10) ^ SyntaxError: invalid syntax 上面那句話因?yàn)槿鄙倜疤?hào):,導(dǎo)致解釋器無(wú)法解釋?zhuān)谑菆?bào)錯(cuò)。這個(gè)...
摘要:那些瑣碎的知識(shí)點(diǎn)作者記錄的的很奇特很難記的知識(shí)點(diǎn)。易錯(cuò)知識(shí)點(diǎn)整理注意和的區(qū)別中和都是輸出的作用,但是兩者之間還是有細(xì)微的差別。今天手頭不忙,總結(jié)一下,分享過(guò)程中掌握的知識(shí)點(diǎn)。 深入理解 PHP 之:Nginx 與 FPM 的工作機(jī)制 這篇文章從 Nginx 與 FPM 的工作機(jī)制出發(fā),探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協(xié)同工作的。 PHP 那些瑣碎的知識(shí)...
摘要:上下文管理器和塊上下文管理器協(xié)議包含和兩個(gè)方法。語(yǔ)句運(yùn)行結(jié)束后,會(huì)在上下文管理器對(duì)象上調(diào)用方法,以此扮演子句的角色。 上下文管理器 最終,上下文管理器可能幾乎與子程序(subroutine)本身一樣重要。 在各種語(yǔ)言中 with 語(yǔ)句的作用不同,而且做的都是簡(jiǎn)單的事,雖然可以避免不斷使用點(diǎn)號(hào)查找屬性,但是不會(huì)做事前準(zhǔn)備和事后清理。 if語(yǔ)句之外的else塊 else太個(gè)性了, 其他語(yǔ)言...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1983·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02