12.異常、異常處理、斷言、推導表達式

         異常         

 

異常自己是類的實例spa

1、異常

>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> a === 2
  File "<stdin>", line 1
    a === 2
        ^
SyntaxError: invalid syntax
>>> a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

2、Python的異常結構 (基於繼承)

在 Python 中全部的異常都是繼承自 BaseException 直接分爲四大類:調試

一、SystemExit:Python退出異常

二、KeyboardInterrupt: 鍵盤打斷(Ctrl+C)

三、GeneratorExit: 生成器退出(下次課再講)

四、Exception: 普通異常(只會使用這部分的異常)

3、錯誤回溯

     異常處理      

 一、基本的 try … except …

二、捕獲具體的異常捕獲多種異常

三、關於 Exception 及其 子類 的解釋

四、更加豐富的結構

代碼中會出現的異常都是 Exception 的子類, 所以在 except 中只須要在最後加上 Exception 便可 code

在捕獲異常的過程當中,會從上倒下依次對比異常,找到以後就不會再日後查找blog

 

try:
    print("-------------1------------")    #有可能出錯的代碼
    print(c)
    print("------------2-------------")
except NameError as info:   #在這裏用as 將捕獲到的異常 用一個變量保存
    print("捕獲到了異常,會執行我下面的代碼對異常進行處理")
    print(info)  #把捕獲的信息返回出去
else:
    print("沒有捕獲到異常執行我")
finally:
    print("無論有沒有異常都會執行我")

# 注意事項:
# 1. try       下面放可能出錯的代碼
# 2. except  try下面的代碼出錯後,會執行except下面的代碼
# 3. else      try下面代碼沒有錯誤,執行else下面的代碼
# 4. finally 無論try下面的代碼有沒有出錯,始終都會執行

-------------1------------
捕獲到了異常,會執行我下面的代碼對異常進行處理
name 'c' is not defined
無論有沒有異常都會執行我

 

五、擴展(自定義異常類型)

class MyError(Exception):    #自定義異常必須繼承於Exception
    pass
raise MyError 


try:
    raise NameError          #主動拋出異常
except NameError:
    print("報錯了")
#raise 主動拋出異常
# 格式:raise 異常類型
# 注意:raise  是主動拋出後面寫的異常類型

         斷言         assert

assert 1 == 1      #條件成立往下運行 條件不成立報錯
print("======================")

# 斷言語句是將調試斷言插入程序的一種便捷方式
# assert 的語法規則是:
# 表達式返回 True  不報錯
# 表達式返回 False  報錯  報 AssertionError     #斷言錯誤

    推導表達式    

 1、列表推導

 

2、集合和字典推導

相關文章
相關標籤/搜索