-異常通常出現的處理方式
·條件語句:if/else
·異常處理:try/except/else/finally
1.python中的異常和相關語法
·exception:python內建的異常類
·raise:丟擲異常
·try:嘗試執行以下語句
·except:在try語句之後,捕獲某個異常,為空則捕獲全部異常(很危險難以debug)
·else:在try語句之後,如果沒有捕獲到異常,則執行
·finally:在try語句之後,無論是否捕獲到異常,均執行
1)
try: #嘗試執行下面的語句
print("enter try")
except: #出現異常就捕獲,這裡是捕獲全部異常(可以在except後面空格加具體異常)
print("enter except")
else: #沒有出現異常則執行
print("enter else")
finally:
print("enter finally")
#以上,except和else只執行其一,finally永遠最後執行
2)
try: #嘗試執行下面的語句
print("enter try")
1 / 0
except zerodivisionerror:
print("enter except zerodivisionerror")
except arithmeticerror:
print("enter except arithmeticerror")
except:
print("enter except")
else: #沒有出現異常則執行
print("enter else")
finally:
print("enter finally")
3)
mode = 'debug'
try:
print('enter try')
1 / 0
except exception as e:
print("enter except")
if mode == 'debug':
raise #丟擲異常,而且是執行完finally之後才丟擲異常,因為一旦丟擲異常程式就會中斷
elif mode == 'warn':
print(e) #僅僅列印提示資訊,不丟擲異常。而且是先列印提示資訊,再執行finally(因為程式不會中斷)
else:
print("enter else")
finally:
print("enter finally")
2.異常的傳播
def f1():
try:
return 1 / 0
except exception as e:
print("this is f1.")
print(e)
raise
def f2():
try:
f1()
except exception as e:
print("this is f2.")
print(e)
def f3():
try:
f2()
except exception as e:
print("this is f3.")
print(e)
def main():
try:
f3()
except exception as e:
print("this is main")
print(e)
if __name__ == "__main__":
try:
main()
except exception as e:
print("this is __main__")
print(e)
以上**輸出結果:
this is f1
division by zero
this is f2.
division by zero
原因是:f1雖然捕獲了異常,但是將其丟擲了,丟擲的異常又被f2給捕獲了,而f2並未丟擲,所以在之後都檢測不到
如果所以函式都加上raise的話,但最後的__main__不加上,則所有函式都會列印相應的結果
如果連最後的__main__都加上raise的話,則直接traceback了,涼涼
Python學習8 異常處理
執行try子句 在關鍵字try和關鍵字except之間的語句 如果沒有異常發生,忽略expect子句,try子句執行結束。但是如果有異常發生,那麼將直接忽略後面的語句,執行expect,若expec後面的錯誤於該錯誤相符,那麼執行該expect後面的語句。乙個try可以對應多個expect.如果乙個...
Python 快速入門筆記(8) 異常處理
python 中的異常處理有許多與 c 中類似的部分,比如 raise 語句與 c 中的 throw 語句相似,try except 語句與 c 中的 try catch 語句相似。當然也有一些不同的地方,比如 python 中可以捕獲 除數為0 這種執行時錯誤,而 c 就不能,例如 x int i...
快速了解python異常
1 valueerror 值錯誤 操作的資料出現問題 例 int e 型別轉換,輸入了資料 非數字字元,valueerror 2 nameerror 名稱錯誤 操作的變數出現問題 print name 列印變數中的資料,變數 name 沒有定義 nameerror 3 indexerror 索引錯誤...