Python5--异常处理

作者: 伊洛的小屋 | 来源:发表于2020-08-24 10:37 被阅读0次
    1.异常处理
    • 对于不符合预期的用户操作或数据输入,程序总会出现异常情况
    # 伊洛Yiluo
    # https://yiluotalk.com/
    >>> file_path = '/usr/local/bin/error.py'
    >>> f = open(file_path)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/error.py'
    
    2.Python 常用的异常类
    • NameError访问一个未定义的变量
    • SyntaxError语法错误,这个严格讲算是程序的错误
    • IndexError 对于一个序列,访问的索引超过了序列的范围
    • KeyError 访问一个不存在的字典 Key
    • ValueError 传入无效的参数
    • AttributeErrr 访问类对象中不存在的属性
    3.异常处理方式
    • 处理方法为使用 try,except 和 finally 三个关键字
    >>> file_path = '/usr/local/bin/error.py'
    >>> try:
    ...     f = open(file_path)
    ... except FileNotFoundError as err:
    ...     print(err)
    ...
    [Errno 2] No such file or directory: '/usr/local/bin/error.py'
    
    • 当 try 代码块中一旦出现异常,这个代码块后续的代码不会继续执行,会直接进入到 except 异常处理代码块中
    • finally 关键字是用来进行清理工作,经常和 except 一起使用,即无论是正常还是异常,这段代码都会执行
    • except: 这个语句后不写任何参数,表示将处理所有 try 代码块中抛出的异常
    >>> file_path = '/usr/local/bin/error.py'
    >>> try:
    ...     f = open(file_path)
    ... except FileNotFoundError:
    ...     print('FileNotFoundError')
    ... finally:
    ...     print('Finally')
    ...
    FileNotFoundError
    Finally
    
    4.抛出异常
    raise ValueError()
    
    5.Python 包管理工具
    • Python 提供了包管理工具 pip, pip 的官方网站是 PyPi
    6.pip 的常见命令
    • 显示版本和路径:pip3 --version
    • 升级 pip:sudo pip3 install --upgrade pip
    • 安装包:(sudo) pip3 install package,如果需要指定版本就是:pip3 install package==6.6.6 (写具体的版本号)
    • 卸载包:pip3 uninstall package
    • 升级包:pip3 install --upgrade package,可以使用 ==,>=,<=,<,> 来指定版本号
    • 查看安装已安装的包:pip3 freeze
    • 把需要安装的一系列包写入requirements.txt 文件中,然后执行:pip3 install -r requirements.txt
    7.错误和异常
    • 写程序的时候通常会出现错误,目前(至少)有两种可区分的错误:语法错误异常
    • 语法错误:又称解析错误,经常容易遇到
    • 异常:即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误
    8. 简单的例子
    # 伊洛Yiluo
    b = 1
    
    c = a + b
    print(c)
    
    
    • 上面很简单的代码执行后就会出错,因为并没有定义变量a
    • Python提供的异常处理方法来捕获并处理异常,处理方法为使用 try,exceptfinally 三个关键字
    9. try, except 的使用
    • try 代码块中写可能会出现异常的代码
    • except 代码块中添加处理异常的方法
    • 来将上面的代码处理一下
    # 伊洛Yiluo
    b = 1
    try:
        c = a + b
        print(c)
    except NameError as err:
        print('错误:{}'.format(err))
    
    
    • 依旧没有赋值a变量
    • 然后执行一下
    错误:name 'a' is not defined
    
    Process finished with exit code 0
    
    • 错误提示变量a没有被定义
    • NameError的指的是访问了一个未定义的变量
    • 常见的还有SyntaxError ,IndexError ,KeyError ,ValueError ,AttributeError
    10.多个except
    • except可以有多个,每个处理不同类型的异常,也可以不写任何异常类型名称,则会处理所有捕获异常
    # 伊洛Yiluo
    a = 2
    b = 1
    
    try:
        c = a + b
        print(c)
        f = open('/yiluo/bin/activate.txt')
    
    except NameError as err:
        print('错误:{}'.format(err))
    
    except FileNotFoundError as err2:
        print('错误:{}'.format(err2))
    
    
    • 打开一个不存在的文件
    3
    错误:[Errno 2] No such file or directory: '/yiluo/bin/activate.txt'
    
    Process finished with exit code 0
    
    • 系统抛出了异常,没有这个文件
    # 伊洛Yiluo
    b = 1
    
    try:
        c = a + b
        f = open('/yiluo/bin/activate.txt')
    
    except:
        print('总之就是有错误')
    
    • 不写任何异常类型
    • 运行一下
    总之就是有错误
    
    Process finished with exit code 0
    
    11.finally的使用
    • 使用 finally 可以保证无论 try代码块中的代码是否抛出异常,都能够执行 finally 代码块里的内容
    # 伊洛Yiluo
    a = 2
    b = 1
    
    try:
        c = a + b
        f = open('/yiluo/bin/activate.txt')
    
    except:
        print('总之就是有错误')
    
    finally:
        print('结束异常')
    
    
    • 执行代码
    总之就是有错误
    结束异常
    
    Process finished with exit code 0
    
    • finally成功的运行了
    # 伊洛Yiluo
    a = 2
    b = 1
    
    try:
        c = a + b
    except:
        print('总之就是有错误')
    
    finally:
        print('结束异常')
    
    • 没有任何的异常执行下,看下finally会不会被运行
    # 伊洛Yiluo
    # https://yiluotalk.com/
    结束异常
    
    Process finished with exit code 0
    
    • finally成功运行
    12.抛出异常
    • 如果希望程序执行过程中抛出异常,可以使用 raise语句
    >>> raise NameError('Error ERROR')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: Error ERROR
    
    • 如上抛出了'Error ERROR'的异常

    欢迎下方【戳一下】【点赞】
    Author:伊洛Yiluo
    愿你享受每一天,Just Enjoy !

    相关文章

      网友评论

        本文标题:Python5--异常处理

        本文链接:https://www.haomeiwen.com/subject/bwxjlktx.html