zoukankan      html  css  js  c++  java
  • python基础(十):异常和断言

    异常的分类

    异常主要分为四大类,所有异常都是类的形式,均继承了BaseException这个类。其中SystemExit为Python的退出异常,KeyboardInterrupt为键盘的中断异常,GeneratorExit为生成器的退出异常。最后一种也是我们通常会遇到的异常Exception普通异常。普通异常包括我们平时会经常遇到的异常类型,如下图所示。

    异常捕获

    当程序运行过程中发生错误程序就会终止,为了避免这一情况我们需要捕获异常。

    try/except

      捕获由Python或你引起的异常并恢复

    try/finally

      无论异常是否发生,执行清理行为

    在目前的python版本中except和finally可以同时出现,除此之外还有else语句,其后的语句会在程序未发生异常的时候执行,而finally后的语句无论是否发生异常都会执行。

    try:
        print(aaa)#错误代码
    except Exception as e:
        print("错误信息:",e)
    
    >>>错误信息: name 'aaa' is not defined
    try:
        # print(aaa)#错误代码
        print('aaa')#正确代码
    except Exception as e:
        print("错误信息:",e)
    else:
        print("else执行!!")
    
    >>>aaa
       else执行!!
    try:
        print(aaa)#错误代码
        # print('aaa')#正确代码
    except Exception as e:
        print("错误信息:",e)
    finally:
        print("finally执行!!")
    
    >>>错误信息: name 'aaa' is not defined
    finally执行!!
    
    
    try:
        # print(aaa)#错误代码
        print('aaa')#正确代码
    except Exception as e:
        print("错误信息:",e)
    finally:
        print("finally执行!!")
    
    >>>aaa
    finally执行!!

    异常抛出

    raise语句会手动在代码中触发异常。其功能主要用于程序的调试。

    raise NameError
    
    
    >>>
    Traceback (most recent call last):
      File "/home/pyvip/JoePY/home/pyvip/JoePY/test.py", line 58, in <module>
        raise NameError
    NameError

    断言

    assert语句会有条件的在程序代码中触发异常。assert  条件表达式,当条件表达式返回值为True时,不报错。当条件表达式返回值为False时,报错。报错类型为AssertionError。

    assert 1>2
    
    
    >>>
    Traceback (most recent call last):
      File "/home/pyvip/JoePY/home/pyvip/JoePY/test.py", line 59, in <module>
        assert 1>2
    AssertionError
  • 相关阅读:
    IO多路复用 IO异步
    你没听说过的协程
    事件驱动和IO操作
    堡垒机前戏——paramiko
    听说过的多进程,多线程到底是什么鬼
    socket套接字
    看见就烦的异常
    struts2值栈内部数据结构详解
    hibernate一级缓存的源码初窥
    使用自定义标签模拟jstl的<c:for each>标签
  • 原文地址:https://www.cnblogs.com/austinjoe/p/9475615.html
Copyright © 2011-2022 走看看