日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

(十九)异常处理

發(fā)布時間:2023/11/27 生活经验 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (十九)异常处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是異常處理

異常就是程序運行時發(fā)生錯誤的信號(在程序出現(xiàn)錯誤時,則會產(chǎn)生一個異常,若程序沒有處理它,則會拋出該異常,程序的運行也隨之終止),在python中,錯誤觸發(fā)的異常如下

  • 語法錯誤: 這種錯誤根本就過不了python解釋器的語法檢測,必須在程序執(zhí)行前就改正
  • 邏輯錯誤:
#TypeError:int類型不可迭代
for i in 3:pass
#ValueError
num=input(">>: ") #輸入hello
int(num)#NameError
aaa#IndexError
l=['egon','aa']
l[3]#KeyError
dic={'name':'bruce'}
dic['age']#AttributeError
class Foo:pass
Foo.x#ZeroDivisionError:無法完成計算
res1=1/0
res2=1+'str'

異常的種類

AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性x
IOError 輸入/輸出異常;基本上是無法打開文件
ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤
IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊
IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]
KeyError 試圖訪問字典里不存在的鍵
KeyboardInterrupt Ctrl+C被按下
NameError 使用一個還未被賦予對象的變量
SyntaxError Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)
TypeError 傳入對象類型與要求的不符合
UnboundLocalError 試圖訪問一個還未被設(shè)置的局部變量,基本上是由于另有一個同名的全局變量,
導(dǎo)致你以為正在訪問它

更多的異常

ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError

異常處理

為了保證程序的健壯性與容錯性,即在遇到錯誤時程序不會崩潰,我們需要對異常進行處理,
如果錯誤發(fā)生的條件是可預(yù)知的,我們需要用if進行處理:在錯誤發(fā)生之前進行預(yù)防

如果錯誤發(fā)生的條件是不可預(yù)知的,則需要用到try...except:在錯誤發(fā)生之后進行處理
例如

try:f=open('a.log',mode='r',encoding='utf-8')g=(line.strip() for line in f)print(next(g))print(next(g))print(next(g))print(next(g))print(next(g))
except StopIteration:f.close()

異常分類

異常類智能用來出來指定的異常情況,如果非指定異常則無法處理。

s1='hello'
try:int(s1)
except IndexError as ea:   #將異常的值 賦予一個變量ea,并將該變量打印出來。print(ea)>>>
ValueError: invalid literal for int() with base 10: 'hello'

多分支,結(jié)構(gòu)和if...else...類似

s1='hello'
try:int(s1)
except IndexError as ea:print(ea)
except StopIteration as e:print(e)
except ValueError as b:print(b)或者s2='world'
try:int(s2)
except (IndexError,ImportError,ValueError) as e:print(e)

什么時候用異常處理

是不是任何程序都加上異常處理就好了呢?當然不是

首先try...except是你附加給你的程序的一種異常處理的邏輯,與你的主要的工作是沒有關(guān)系的,這種東西加的多了,會導(dǎo)致你的代碼可讀性變差

然后異常處理本就不是邏輯的擦屁股紙,只有在錯誤發(fā)生的條件無法預(yù)知的情況下,才應(yīng)該加上try...except

轉(zhuǎn)載于:https://www.cnblogs.com/morron/p/9200616.html

總結(jié)

以上是生活随笔為你收集整理的(十九)异常处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。