Python之語法錯誤和異常的概念和處理

2021-09-25 09:19:06 字數 3206 閱讀 9350

語法錯誤:**將不被執行,**分析器直接指出語法錯誤行

異常:**沒有出現錯誤,但是當程式執行起來之後,會在控制台上報錯,這種錯誤稱為異常

異常的特點:當程式在執行過程中遇到異常,而且異常沒有被處理,則程式會終止在出現異常的地方,**不會繼續向下執行

解決問題:當程式遇到異常的時候,讓程式越過異常繼續向下執行

本質【工作機制】:只是將異常遮蔽掉,不影響其他**的執行,並沒有真正的處理,常見的處理方式:捕獲和丟擲

attributeerror:指定物件沒有指定的屬性

zerodevisionerror:不能除以或者取模0

keyerror:字典中沒有指定的鍵

nameerror:沒有宣告或者初始化變數【某個物件沒有某個指定的屬性】

unboundlocalerror:訪問未初始化的本地變數

syntaxerror:python語法錯誤

typeerror :對型別進行無效的操作

情況一:使用except帶乙個異常型別

#情況一:使用except帶乙個異常型別

try:

#可能存在異常的**

num = int(input("請輸入乙個數字:"))

print(10 / num)

pass

except valueerror as e:

#此處的e就相當於乙個valueerror的物件,所有異常的類中將__str__重寫過了,返回乙個異常的描述字串

情況二:使用多個except異常型別

#情況二:使用多個except異常型別

#工作原理;如果try中**出現了異常,則在except分支中從上往下挨個進行匹配錯誤碼,如果匹配上了,則整個try-except結束

try:

#可能存在異常的**

num = int(input("請輸入乙個數字:"))

情況三:except不帶任何異常型別

#情況三:except不帶任何異常型別

#工作原理:不管try**現什麼樣的異常,都會執行except塊

try:

#可能存在異常的**

num = int(input("請輸入乙個數字:"))

print(10 / num)

pass

except:

print("出現了異常")

情況四:乙個except後面可以跟多種錯誤碼

#情況四:乙個except後面可以跟多種錯誤碼

#工作原理;只要try**現的異常匹配上元組中的任意乙個錯誤碼即可

try:

print(10 / 0)

pass

except (zerodivisionerror,keyerror,valueerror):

print("出現了異常")

情況五:else分支,只有當try中的**沒有異常出現的時候,才會執行else分支

除了在try中直接檢測可能存在異常的**,也可以檢測可能存在異常**所在的函式

所有異常的父類是baseexception【exception】,如果baseexception出現在except語句的第乙個,則直接會被執行

說明:區別於else分支,不管try中**有沒有異常,finally塊都會被執行

情況一:直接使用

#情況一:直接使用

try:

print(10 / 0)

except baseexception as e:

print(e)

finally:

print("finally被執行了")

情況二:如果在try-except-finally語句中,在try或者except語句**現return,finally仍然會被執行。使用場景:檔案關閉,資料庫關閉,為了避免資源的浪費

情況三:如果try中的異常沒有匹配到相應的except語句,那麼這個異常會在finally執行之後再次出現

#情況三:如果try中的異常沒有匹配到相應的except語句,那麼這個異常會在finally執行之後再次出現

python基礎 語法錯誤和異常

try 可能出現異常的 except 如果有異常執行的 finally 無論是否存在異常都會被執行的 注意 異常型別的順序要注意,最大的exception放在最後。err表示的是錯誤的原因。ef func try n1 int input 輸入第乙個數字 n2 int input 輸入第二個數字 s...

python 語法錯誤

語法錯誤,也被稱為解析錯誤,也許是你得到的最普通型別的抱怨當你仍然在學習python的時候 解析器重複錯誤行,並在本行最先檢測到錯誤的地方顯示乙個小箭頭。錯誤是由箭頭前面的標記引起的。示例中錯誤在函式print 處被檢測出來,因為它前面少了乙個冒號。檔名稱和行號被列印出來,所以你知道應該去輸入指令碼...

python語法錯誤提示 python錯誤提示

modulenotfounderror 找不到 模組 unboundlocalerror 引用 變數沒有定義 syntaxerror 語法錯誤 typeerror 型別錯誤 attributeerror 屬性錯誤,特性引用和賦值失敗時會引發屬性錯誤 eofebuteerror input 讀取到eo...