第五十一節,異常處理和斷言

2021-09-08 19:25:48 字數 4039 閱讀 4057

try關鍵字,定義獲取程式錯誤1

except關鍵字,出現異常錯誤執行裡面的**2

exception定義錯誤類,exception能獲取到所有型別的錯誤錯誤,as建立錯誤物件名稱,自動獲取錯誤資訊3

#

!/usr/bin/env python

#-*- coding:utf8 -*-

"""獲取程式錯誤資訊

"""try: #

try關鍵字定義獲取程式錯誤

#**塊

a =str(字串)

print

(a)except exception as e: #

except關鍵字出現異常錯誤執行裡面的**,exception定義錯誤類,as建立錯誤物件自動獲取錯誤資訊

print(e) #

列印錯誤物件輸出錯誤資訊#輸出

#name '字串' is not defined

python中的異常種類非常多,每個異常專門用於處理獲取某一項異常4

常見錯誤型別5

attributeerror 試圖訪問乙個物件沒有的樹形,比如foo.x,但是foo沒有屬性x

ioerror 輸入/輸出異常;基本上是無法開啟檔案

importerror 無法引入模組或包;基本上是路徑問題或名稱錯誤

indentationerror 語法錯誤(的子類) ;**沒有正確對齊

indexerror 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

keyerror 試圖訪問字典裡不存在的鍵

keyboardinterrupt ctrl+c被按下

nameerror 使用乙個還未被賦予物件的變數

syntaxerror python**非法,**不能編譯(個人認為這是語法錯誤,寫錯了)

typeerror 傳入物件型別與要求的不符合

unboundlocalerror 試圖訪問乙個還未被設定的區域性變數,基本上是由於另有乙個同名的全域性變數,

導致你以為正在訪問它

valueerror 傳入乙個呼叫者不期望的值,即使值的型別是正確的

更多錯誤型別6

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

我們在以後記錄錯誤時,要想記錄對應的錯誤資訊可以用以下辦法7 

先用對應的錯誤型別來獲取,如果都不是前面對應的錯誤型別,最後用exception來獲取

#

!/usr/bin/env python

#-*- coding:utf8 -*-

"""獲取程式錯誤資訊

"""try

: a =str(字串)

print

(a)except attributeerror as c: #

出現對應錯誤就獲取到資訊,列印出來,如果不是對應錯誤則不執行

print

(c)except ioerror as d: #

出現對應錯誤就獲取到資訊,列印出來,如果不是對應錯誤則不執行

print

(d)except importerror as e: #

出現對應錯誤就獲取到資訊,列印出來,如果不是對應錯誤則不執行

print

(e)except exception as f: #

都不是上面對應的錯誤,用exception來不管是上面錯誤都獲取到

print

(f)#輸出#

name '字串' is not defined

完整異常處理**塊8

else主**塊執行完,執行該塊9

finally無論異常與否,最終執行該塊10

#

!/usr/bin/env python

#-*- coding:utf8 -*-

try:

#主**塊

a =str(hjhb)

except

exception as e:

#**錯誤執行模組

print

(e)else

:

print("

主**塊執行完,執行該塊")

finally

:

print("

無論異常與否,最終執行該塊

")

主動觸發異常,也就是沒有錯誤,主動觸發乙個錯誤11

raise關鍵字,主動觸發乙個錯誤12

#

!/usr/bin/env python

#-*- coding:utf8 -*-

try:

#主**塊

a = str("

1234")

raise exception('

錯誤了。。。')

except

exception as e:

#**錯誤執行模組

print

(e)#輸出#

錯誤了。。。

斷言13

assert 條件,條件成立就成立繼續執行,條件不成立就報錯,一般用於測試14

#

!/usr/bin/env python

#-*- coding:utf8 -*-

assert 1 == 1

print("

123"

)assert 1 == 2

print("

456")

LeetCode第五十一題 N皇后

問題簡介 給定乙個n n的棋盤,求解如何將n個皇后放置在棋盤上,保證其之間不互相攻擊,即給定乙個整數 n,返回所有不同的解決方案,用 q 和 分別代表了皇后和空位 注 例如下圖為n 8 時的乙個解 舉例 輸入 4 輸出 q solution 1 q q q.q.solution 2 q q q 解法...

LeetCode第五十一題 N皇后

n queens 問題簡介 給定乙個n n的棋盤,求解如何將n個皇后放置在棋盤上,保證其之間不互相攻擊,即給定乙個整數 n,返回所有不同的解決方案,用 q 和 分別代表了皇后和空位 注 例如下圖為n 8 時的乙個解 舉例 輸入 4 輸出 q solution 1 q q q.q.solution 2...

第五十一課 c 物件模型分析(下)

1 在c 編譯器的內部類可以理解為結構體 2 子類是由父類成員疊加子類新成員得到的 1 當類中宣告乙個虛函式時,編譯器會在類中生成乙個虛函式表 2 虛函式表是乙個儲存成員函式位址的資料結構 3 虛函式表是由編譯器自動生成與維護的 4 virtual成員函式會被編譯器放入虛函式表中 5 存虛函式時,每...