zoukankan      html  css  js  c++  java
  • Python学习笔记(16)-异常

    异常

    程序执行过程中出现导致程序终止的错误叫做异常

    捕获一个异常

    表现形式:

    try:

      可能出现异常的代码

    except 异常的名字:

      遇到异常时的处理方式

    示例:

    1 try:
    2     print(aaaaaa)
    3 except NameError:
    4     print("---已知晓异常---")
    5 print("Hello World"

    运行结果:

    ---已知晓异常---
    Hello World

    说明:

    1、单独执行print(aaaaaa)时异常名字是NameError

    2、不使用异常处理时上面程序会报错并结束,不会输出Hello World,使用异常处理时可正常打印Hello World

    3、except后的异常名字必须与执行代码时产生的真实异常名字一致

    4、如try中的代码没有异常则正常执行try中代码,不执行except中的代码

    捕获多个异常

    try:

      可能出现异常的代码块

    except (异常的名字1,异常的名字2):

      遇到异常时的处理方式

    示例:

    1 try:
    2     print(aaaaaa)
    3     print(3/0)
    4 except (NameError,ZeroDivisionError):
    5     print("---已知晓异常---")
    6 print("Hello World")

    运行结果:

    ---已知晓异常---
    Hello World

    说明:

    1、3/0产生的异常名字为ZeroDivisionError

    2、except后的异常名字必须与执行代码时产生的真实异常名字一致

    捕获所有异常

    try:

      可能出现异常的代码块

    except Exception:

      遇到异常时的处理方式

    示例:

    1 try:
    2     print(aaaaaa)
    3     print(3/0)
    4 except Exception:
    5     print("---已知晓所有异常---")
    6 print("Hello World")

    运行结果:

    ---已知晓所有异常---
    Hello World

    捕获异常时获取异常的描述信息

    产生异常时除了需要处理异常之外有时还需知道产生异常的原因

    表现形式:

    try:

      可能出现异常的代码块

    except Exception as 变量名:

      遇到异常时的处理方式

      打印变量

    示例:

    1 try:
    2     print(aaaaaa)
    3 except Exception as a:
    4     print("---已知晓异常---")
    5     print(a)
    6 print("Hello World")

    运行结果:

    ---已知晓异常---
    name 'aaaaaa' is not defined
    Hello World

    异常处理中使用else

    含义:

    如果没有捕获到异常,则执行else中的代码块

    表现形式:

    try:

      可能出现异常的代码块

    except Exception:

      遇到异常时的处理方式

    else:

      没捕获到异常时执行的代码块

    示例:

    1 try:
    2     print("abcdefg")
    3 except Exception:
    4     print("---已知晓异常---")
    5 else:
    6     print("程序无异常")
    7 print("Hello World")

    运行结果:

    abcdefg
    程序无异常
    Hello World

    异常处理中使用finally

    含义:

    无论是否捕获到异常,最后都需执行finally中的代码块

    表现形式:

    try:

      可能出现异常的代码块

    except Exception:

      遇到异常时的处理方式

    else:

      没捕获到异常时执行的代码块

    finally:

      最后一定会执行的代码块

    示例:

    1 try:
    2     f = open("test.txt","r")
    3 except Exception:
    4     print("---已知晓异常---")
    5 else:
    6     print("程序无异常")
    7 finally:
    8     f.close()
    9 print("Hello World")

    运行结果:

    ---已知晓异常---
    Traceback (most recent call last):
      File "F:/untitled/Python_jichu/异常.py", line 8, in <module>
        f.close()
    NameError: name 'f' is not defined

    说明:

    因为不存在test.txt文件,所以f.close()会报错退出

  • 相关阅读:
    线程的实现方式
    实现一个拷贝文件的工具类,要使用字符流还是字节流
    String&&StringBuilder&&StringBuffer
    面向对象的特征
    索引的选择
    TCP之Nagle算法&&延迟ACK
    通用套接字选项和TCP套接字选项
    TCP之非阻塞connect和accept
    TCP之种种连接异常
    TCP之listen&backlog
  • 原文地址:https://www.cnblogs.com/lidongaistudy/p/9591844.html
Copyright © 2011-2022 走看看