异常处理

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 传入一个调用者不指望的值,即便值的类型是正确的
相关文章
相关标签/搜索