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