享受每一天,Just Enjoy !

0%

Python基础 Zero to Hero 异常的处理 (一)

1. 异常的定义
  • 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)
2. 错误和异常
  • 写程序的时候通常会出现错误,目前(至少)有两种可区分的错误:语法错误异常
  • 语法错误:又称解析错误,经常容易遇到
  • 异常:即使语句或表达式在语法上是正确的,但在尝试执行时,它仍可能会引发错误
    3. 简单的例子
    1
    2
    3
    4
    5
    # 伊洛Yiluo
    b = 1

    c = a + b
    print(c)
  • 上面很简单的代码执行后就会出错,因为并没有定义变量a
  • Python提供的异常处理方法来捕获并处理异常,处理方法为使用 try,exceptfinally 三个关键字
    3. try, except 的使用
  • try 代码块中写可能会出现异常的代码
  • except 代码块中添加处理异常的方法
  • 来将上面的代码处理一下
    1
    2
    3
    4
    5
    6
    7
    # 伊洛Yiluo
    b = 1
    try:
    c = a + b
    print(c)
    except NameError as err:
    print('错误:{}'.format(err))
  • 依旧没有赋值a变量
  • 然后执行一下
1
2
3
错误:name 'a' is not defined

Process finished with exit code 0
  • 错误提示变量a没有被定义
  • NameError的指的是访问了一个未定义的变量
  • 常见的还有SyntaxError ,IndexError ,KeyError ,ValueError ,AttributeError
4.多个except
  • except可以有多个,每个处理不同类型的异常,也可以不写任何异常类型名称,则会处理所有捕获异常
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 伊洛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))
  • 打开一个不存在的文件
    1
    2
    3
    4
    3
    错误:[Errno 2] No such file or directory: '/yiluo/bin/activate.txt'

    Process finished with exit code 0
  • 系统抛出了异常,没有这个文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 伊洛Yiluo
    b = 1

    try:
    c = a + b
    f = open('/yiluo/bin/activate.txt')

    except:
    print('总之就是有错误')
  • 不写任何异常类型
  • 运行一下
    1
    2
    3
    总之就是有错误

    Process finished with exit code 0
    5.finally的使用
  • 使用 finally 可以保证无论 try代码块中的代码是否抛出异常,都能够执行 finally 代码块里的内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 伊洛Yiluo
    a = 2
    b = 1

    try:
    c = a + b
    f = open('/yiluo/bin/activate.txt')

    except:
    print('总之就是有错误')

    finally:
    print('结束异常')
  • 执行代码
    1
    2
    3
    4
    总之就是有错误
    结束异常

    Process finished with exit code 0
  • finally成功的运行了
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 伊洛Yiluo
    a = 2
    b = 1

    try:
    c = a + b
    except:
    print('总之就是有错误')

    finally:
    print('结束异常')
  • 没有任何的异常执行下,看下finally会不会被运行
    1
    2
    3
    结束异常

    Process finished with exit code 0
  • finally成功运行
    6.抛出异常
  • 如果希望程序执行过程中抛出异常,可以使用 raise语句
    1
    2
    3
    4
    >>> raise NameError('Error ERROR')
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: Error ERROR
  • 如上抛出了'Error ERROR'的异常
    ……待续
    在这里插入图片描述

欢迎下方【戳一下】【点赞】
Author:伊洛Yiluo
2019年12月16日
愿您享受每一天,Just Enjoy !

关注公众号获取更多内容