語法錯誤:**將不被執行,**分析器直接指出語法錯誤行異常:**沒有出現錯誤,但是當程式執行起來之後,會在控制台上報錯,這種錯誤稱為異常
異常的特點:當程式在執行過程中遇到異常,而且異常沒有被處理,則程式會終止在出現異常的地方,**不會繼續向下執行
解決問題:當程式遇到異常的時候,讓程式越過異常繼續向下執行
本質【工作機制】:只是將異常遮蔽掉,不影響其他**的執行,並沒有真正的處理,常見的處理方式:捕獲和丟擲
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後面可以跟多種錯誤碼
情況五:else分支,只有當try中的**沒有異常出現的時候,才會執行else分支#情況四:乙個except後面可以跟多種錯誤碼
#工作原理;只要try**現的異常匹配上元組中的任意乙個錯誤碼即可
try:
print(10 / 0)
pass
except (zerodivisionerror,keyerror,valueerror):
print("出現了異常")
除了在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...