异常处理python 空气质量问题_python的异常处理
異常處理
什么是異常?
首先要清楚,什么是異常,異常就是程序運(yùn)行時發(fā)生錯誤的信號(在程序出現(xiàn)錯誤時,則會產(chǎn)生一個異常,若程序沒有處理它,則會拋出該異常,程序的運(yùn)行也隨之終止),在python中,錯誤觸發(fā)的異常如下
異常是由錯誤觸發(fā)的,那么錯誤有哪些情況呢?
1.語法錯誤:
#語法錯誤示范一else#語法錯誤示范二def test: pass#語法錯誤示范三class Cal pass#語法錯誤示范四print(hello1.語法錯誤(這種錯誤,根本過不了python解釋器的語法檢測,必須在程序執(zhí)行前就改正)View Code2.邏輯錯誤
# res=1/0# l=[1,2]# l[10]# age=input('>>: ')# age=int(age)# res=1/0# l=[]# l[10000]# dic={}# dic['name']# class Foo:# pass# Foo.x2.邏輯錯誤示范View Code異常的種類
在平時編碼過程中,常見的異常有以下這些:
AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性xIOError 輸入/輸出異常;基本上是無法打開文件ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊IndexError 下標(biāo)索引超出序列邊界,比如當(dāng)x只有三個元素,卻試圖訪問x[5]KeyError 試圖訪問字典里不存在的鍵KeyboardInterrupt Ctrl+C被按下NameError 使用一個還未被賦予對象的變量SyntaxError Python代碼非法,代碼不能編譯(個人認(rèn)為這是語法錯誤,寫錯了)TypeError 傳入對象類型與要求的不符合UnboundLocalError 試圖訪問一個還未被設(shè)置的局部變量,基本上是由于另有一個同名的全局變量,導(dǎo)致你以為正在訪問它ValueError 傳入一個調(diào)用者不期望的值,即使值的類型是正確的當(dāng)然,還有其他異常,這里就不做過多演示。出現(xiàn)異常,我們肯定想到要處理,不然程序就直接報(bào)錯崩潰了。其實(shí)我們一直在處理異常,只是沒有發(fā)現(xiàn),比如要判斷你輸入的內(nèi)容是不是數(shù)字,我們以前是這么判斷的:
age = input('請輸入你的年齡: ').strip()if age.isdigit(): int(age) #這是主邏輯elif age.isspace(): print('輸入的是空格!')elif len(age) == 0 : print('沒有輸入內(nèi)容')else: print('其他異常!')>>>請輸入你的年齡: dasdasf>>>其他異常!在這里if就是在處理異常,但是,如果我還有其他程序也要運(yùn)行,那就要寫成這樣了:
age = input('請輸入你的年齡: ').strip()if age.isdigit(): int(age) #這是主邏輯elif age.isspace(): print('輸入的是空格!')elif len(age) == 0 : print('沒有輸入內(nèi)容')else: print('其他異常!') num = input('請輸入你的編號: ').strip()if num.isdigit(): int(num) #這是主邏輯elif num.isspace(): print('輸入的是空格!')elif len(num) == 0 : print('沒有輸入內(nèi)容')else: print('其他異常!')View Code這時候,你會發(fā)現(xiàn),程序?qū)懙暮荛L,可讀性差,如果有十個這樣的輸入,那這個程序就沒法看了,這時候,python提供了一種異常處理的方法try...except...
part1 基本語法
try: 被執(zhí)行的邏輯except 異常名稱: 如果try中的邏輯出現(xiàn)異常,就執(zhí)行這段邏輯現(xiàn)在用這套方法來處理上面的異常,看看效果怎么樣:
try: age = input('請輸入你的年齡: ').strip() int(age) num = input('請輸入你的編號: ').strip() int(num)except ValueError as e: #根據(jù)報(bào)錯知道錯誤類型是ValueError print(e)>>>請輸入你的年齡: 23>>>請輸入你的編號: dwqd>>>invalid literal for int() with base 10: 'dwqd'View Code這樣一看代碼簡潔了很多啊,效果很完美
part2 異常只能用來處理指定的異常情況,其他情況不會處理
我們可以試一下,把錯誤類型改成別的,看看會怎樣:
try: age = input('請輸入你的年齡: ').strip() int(age) num = input('請輸入你的編號: ').strip() int(num)except IndexError as e: print(e)>>>請輸入你的年齡: ffqTraceback (most recent call last): File "C:/Users/pengfy/PycharmProjects/untitled/錯誤與異常/錯誤與異常.py總結(jié)
以上是生活随笔為你收集整理的异常处理python 空气质量问题_python的异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythonopencv的配置_pyth
- 下一篇: bootstrap中轮播图、模态框、提示