異常處理

re 模塊

  • findallpython

  • search正則表達式

  • match網絡

    • ret =re.math("\d+","324ajfldksj")
    • `print (ret.goup())
    • 重頭開始匹配,至關於
    • ret = re.search("^\d+","324ajfldksj")
    • print(ret.goup())
  • (?:正則表達式) 表示取消優先顯示功能

  • `(?P <組名> 正則表達式)

異常處理

  • 異常

    • 在編譯階段沒問題,在執行階段才報錯
  • 語法錯誤

    • 在程序執行前就規避掉,不該該留到程序中來處理
      • 在編譯階段出現的報錯,飄紅
  • 異常出現以後,程序就不繼續執行了code

  • 如何查看異常?

  • 基本語法:對象

    • try:索引

      • 被檢查的代碼塊
    • execpt 異常類型:ip

      • try中一旦檢測到異常,就會執行execpt下的代碼塊資源

      • try:
            f = open("a.txt")
            g = (line.strip() for line in f)
            print(next(g))
            print(next(g))
            print(next(g))
            print(next(g))
        except StopIteration:
            f.close()       #當print(next(g)讀完後,下一句print(next(g))就會報錯,
                            # 而後觸發except語句,執行f.close()
        
        l = ['登錄','註冊']
        try:
            num = int(input('num : '))
            print(l[num - 1])
        except (ValueError,IndexError): #能夠將錯誤類型寫在一塊兒
            print('輸入了錯誤的內容')
  • 多分支input

    • l = ['登錄','註冊']
      try:
          num = int(input('num : '))
          print(l[num - 1])
      except ValueError:
          print('輸入了錯誤的內容')
      except IndexError:
          print('您輸入的內容不在範圍內')
      #利用多分支,執行不一樣錯誤後的不一樣語句
  • 萬能異常 (慎用)儘可能不要直接用來處理錯誤it

    try:
        int("sfh")
    except Exception:
        print("異常啦")    #異常啦   即遇到錯誤就執行萬能異常
    • 能夠放在多分支最後,當遇到未知錯誤時,執行Exception後的代碼塊。
    l = ['登錄','註冊']
    try:
        num = int(input('num : '))
        print(l[num - 1])
    except (ValueError,IndexError):
        print('輸入了錯誤的內容')
    except Exception as e:
        print(e)
  • 異常處理中的其餘機制

    • else 與for else語句類型類似,for語句中不能被打斷,不然不會執行else語句

    • try:
          pass
          #發郵件的邏輯
      except 錯誤類型:
          print("執行某個處理")
      else:
          pass
          #彙報這段代碼執行完了:才能執行else語句
  • finallly 不管如何都要執行,

    • 應用場景:收尾工做,打開一個文件,佔用一個網絡資源,打開了一個文件,執行完後或者出現錯誤,都須要進行關閉文件,這時候finally就完美作到這點

    • # try:
      #     f = open('content')
      #     name      #碰見錯誤
      # finally:
      #     f.close()     #不管如何都會執行
      #     print('closed')
  • raise 主動觸發異常

  • try:
        raise TypeError("類型錯誤")
    except Exception as e:
        print(e)

    自定義異常

    class EvaException(BaseException):
        def __init__(self,msg):
            self.msg=msg
        def __str__(self):
            return self.msg
    
    try:
        raise EvaException('類型錯誤')
    except EvaException as e:
        print(e)
  • 斷言

    • assert 1 == 1   #知足條件才執行
      print('*'*100)
      assert 1 == 2
      print('*'*100)

      常見 錯誤類型

      AttributeError 試圖訪問一個對象沒有的樹形,好比foo.x,可是foo沒有屬性x IOError 輸入/輸出異常;基本上是沒法打開文件 ImportError 沒法引入模塊或包;基本上是路徑問題或名稱錯誤 IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊 IndexError 下標索引超出序列邊界,好比當x只有三個元素,卻試圖訪問x[5] KeyError 試圖訪問字典裏不存在的鍵 KeyboardInterrupt Ctrl+C被按下 NameError 使用一個還未被賦予對象的變量 SyntaxError Python代碼非法,代碼不能編譯(我的認爲這是語法錯誤,寫錯了) TypeError 傳入對象類型與要求的不符合 UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是因爲另有一個同名的全局變量, 致使你覺得正在訪問它 ValueError 傳入一個調用者不指望的值,即便值的類型是正確的
相關文章
相關標籤/搜索