常見的錯誤類型:1.語法錯誤(不可處理) 2.邏輯錯誤(可做異常處理)
錯誤:
1/0
name
2+'3'
[][3]
{}['k']
input() : 輸入int('a')
程序一旦發生錯誤,就從錯誤的位置停下來,不再執行後面的內容
異常處理結構:
try: # 待處理代碼塊
except: # 異常處理
else: # 沒有異常時執行
finally: # 無論代碼出不出錯,finally模塊的代碼都會執行(例如文件操作,close操作)
try:
res = int(input('輸入一個數字>>>'))
print(res * '*')
[][3]
except ValueError:
print('輸入錯誤')
except IndexError:
print('超出列表的索引長度了')
except Exception:
print('萬能處理,忽略所有的錯誤類型')
except Exception as e:
print(e) # 打印錯誤是什麼
else:
print('沒有異常的時候執行else的代碼')
finally:
print('不管代碼有沒有出錯,都會執行finally的代碼')
1.except可以有多個分支,加上不同的錯誤類型,處理多個異常,
2.可以直接使用except Exception:不加錯誤類型,默認忽略所有錯誤,一般放在異常處理分支的最後,
3.else的代碼在沒有異常時執行
4.finally的代碼最終都會執行
例子:(文件操作,finally的作用,最終文件都會關閉close)
def main():
try:
f = open('test.txt', 'w')
for line in f:
int(line)
return True
except:
print('Error')
return Flase
else:
print('success')
finally:
f.close()
finally 在遇到 return 的時 仍然會執行 finally代碼塊