zoukankan      html  css  js  c++  java
  • Python之异常处理

    错误包括语法错误和逻辑错误

    异常是程序运行时发生错误的信号,解释器追踪程序,根据错误抛出的异常。

    异常

    常用的异常:

    AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
    IOError 输入/输出异常;基本上是无法打开文件
    ImportError 无法引入模块或包;基本上是路径问题或名称错误
    IndentationError 语法错误(的子类) ;代码没有正确对齐
    IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
    KeyError 试图访问字典里不存在的键
    KeyboardInterrupt Ctrl+C被按下
    NameError 使用一个还未被赋予对象的变量
    SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
    TypeError 传入对象类型与要求的不符合
    UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
    导致你以为正在访问它
    ValueError 传入一个调用者不期望的值,即使值的类型是正确的

    异常处理是为了防止程序崩溃

    if判断可以做异常处理但是重复性高和可读性差,不可行。

      正统异常处理机制:

    try:

      被检测的代码块

    except 异常类型:

      try中一旦检测到异常,就执行这个位置的逻辑

      多分支和万能异常

     1 s1 = 'hello'
     2 try:
     3     int(s1)
     4 except IndexError as e:
     5     print(e)
     6 except KeyError as e:
     7     print(e)
     8 except ValueError as e:
     9     print(e)
    10 #except Exception as e:
    11 #    print(e)
    12 else:
    13     print('try内代码块没有异常则执行我')
    14 finally:
    15     print('无论异常与否,都会执行该模块,通常是进行清理工作')

    输出

    invalid literal for int() with base 10: 'hello'
    无论异常与否,都会执行该模块,通常是进行清理工作

      主动触发异常

    1 try:
    2     raise TypeError('类型错误')
    3 except Exception as e:
    4     print(e)

    输出

    类型错误

    1 class EgonException(BaseException):
    2     def __init__(self,msg):
    3         self.msg=msg
    4 try:
    5     raise EgonException('类型错误')
    6 except EgonException as e:
    7     print(e)

    输出

    类型错误

      断言

    assert 表达式(获取一个布尔值,True则继续下面代码,False则抛出AssertionError)  

      异常处理特性

    1:把错误处理和真正的工作分开来
    2:代码更易组织,更清晰,复杂的工作任务更容易实现;
    3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;

      尽量少用,会降低代码可读性

  • 相关阅读:
    误删本地分支,两天的工作量差点毁于一旦,使用git reflog 有惊无险恢复
    单点登录SSO
    IdentityServer4介绍和使用
    常见的远程无线通信技术
    4G模块和DTU模块有何区别
    以太网IO控制器
    什么是无线网关,无线网关的功能
    什么是IOT网关,网关功能有哪些
    Modbus RTU和Modbus TCP的两种区别
    数据采集网关设备 如何选择数据采集网关
  • 原文地址:https://www.cnblogs.com/chenyuan-1995/p/9717587.html
Copyright © 2011-2022 走看看