兄弟連學Python 錯誤和異常處理
阿新 • • 發佈:2017-12-12
嘗試 dex 訪問 port def post 推薦 log 出現
#常見的異常
class Human:
#屬性
sex = ‘man‘
age = 18
#方法
def run(self):
print(‘跑啊~~~‘)
#實例化對象
#zw = Human()
#print(zw.age)
#AttributeError 嘗試訪問未知的對象屬性
#print(zw.color)
#lists = [‘qtt‘,‘mll‘,‘cyy‘,‘lss‘]
#IndexError 索引錯誤
#print(lists[200])
#dicts = {‘ym‘:‘yongmei‘,‘bd‘:‘baidong‘,‘qw‘:‘qiaowei‘}
#KeyError 鍵錯誤
#print(dicts[‘gg‘])
#KeyboardInterrupt 用戶鍵盤終止程序運行
#while True:
#pass
#NameError 變量名錯誤
#print(conghao)
#IndentationError 縮進錯誤
#def myfunc():
#print(‘111‘)
#print(‘222‘)
#ZeroDivisionError 除數不能為0
#12/0
#斷言語句
#assert 3 < 1
#try...except語法 用於解決程序異常問題
try:
#此區域內嘗試執行某些代碼
girls = [‘jiaojiao‘,‘lele‘,‘feifei‘]
#訪問不存在的索引
#print(girls[10])
#訪問不存在的變量
#print(pa)
#設置當前區域只接受變量名稱錯誤,並且解決
except NameError:#程序出現異常執行的區域
print(‘程序[變量名]出現了異常情況!‘)
#設定當前區域只接受索引錯誤,並且解決
except IndexError:
print(‘程序[索引]出現了異常情況!‘)
#接受所有異常的區域,並且解決
except:
print(‘程序出現了錯誤! ‘)
#程序沒有出現任何異常執行的區域
else:
print(‘太好了一個錯誤都沒有‘)
#無論程序有沒有異常都會執行取余
finally:
print(‘工作結束,收工走人‘)
print(‘++++++++++++‘)
#異常處理的小例子
try:
#書寫一個列表
shits = [‘ershi‘,‘yanshi‘,‘bishi‘,‘shi‘]
#訪問不存在的索引
print(shits[100])
except IndexError as e:#as語法此處的作用是設置一個變量來接受錯誤的異常信息對象
#查看錯誤異常信息
print(e,type(e))
#提供異常的解決方案
print(shits[-1])
try:
print(pa)
except NameError:
print(‘None‘)
#自定義錯誤類型和處理
#導入系統模塊
import sys
#定義獲取信息的函數()文件名,所在函數名,當前行數
def get_head_info():
try:
raise Exception
except:
f = sys.exc_info()[2].tb_frame.f_back
return ( f.f_code.co_filename, f.f_code.co_name, str(f.f_lineno))
#不能為負數的異常類型
class FuShuError(RuntimeError):#自定義異常類需要繼承運行時異常類 可以直接或者間接繼承Exception類即可
#添加初始化魔術非法
def __init__(self,errormsg = ‘‘,errorno = ‘‘,errorline = ‘‘,errorfile = ‘‘):
#將錯誤信息存入對象
self.msg = errormsg#錯誤信息
self.no = errorno#錯誤編號
self.line = errorline#錯誤行數
self.file = errorfile#錯誤文件
try:
#設置年齡
age = -18
#檢測年齡是否合法
if age < 0:#年齡為負數 異常
#拋出異常
raise FuShuError(‘值為負數‘,250,get_head_info()[2],__file__)
#接受非負數的異常
except FuShuError as e:
print(e,type(e))
print(‘年齡為負數屬於非法數值‘)
age = age * -1
except NameError:
print(‘變量書寫異常‘)
except:
print(‘程序出現異常‘)
print(age)
#with語法
‘‘‘(推薦使用with語法進行文件操作!)
#文件讀取操作
#1.打開文件
fp = open(‘09.txt‘,‘r‘)
#2.讀取文件
result = fp.read()
print(result)
#3.關閉文件
fp.close()
‘‘‘
"""
#將程序放入try except語法中
try:
# 1.打開文件
fp = open(‘09.txt‘, ‘r‘)
# 2.讀取文件
result = fp.read()
print(result)
#故意報錯
print(babi)
‘‘‘
#不行
# 3.關閉文件
fp.close()
‘‘‘
#文件運行出錯可以被OSError接受
except OSError:
print(‘程序運行出現問題‘)
except NameError:
print(‘變量名錯誤‘)
‘‘‘
else:#不行
#3.關閉文件
fp.close()
‘‘‘
‘‘‘
finally:#不行
#3.關閉文件
fp.close()
‘‘‘
"""
#with語法
try:
#1.打開文件 #3.with會監控文件的使用自動關閉
with open(‘09.txt‘,‘r‘) as fp: #相當於 fp = open(‘09.txt‘,‘r‘)
#2.讀取文件
result = fp.read()
print(result)
print(bibi)
except OSError:
print(‘操作文件出錯‘)
except NameError:
print(‘變量不存在‘)
兄弟連學Python 錯誤和異常處理