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

    异常是错误发生前的一种信号,如果没有人来处理这个信号,就会中断执行并且抛出错误信息。

    异常分为语法检查异常和运行时异常:

    语法检查异常是最低级的异常 在编译器里自动提示 在文本编辑器时当你运行代码解释器就会检查语法    绝对不能犯语法检查异常的错误

    运行时异常是我们处理的重点,通常在代码运行时才会被发现,在运行时发生异常并且没有正确处理,就会抛出错误信息 并中断程序执行

    我们学习异常处理是为了让我们的程序更加稳定,保证健壮性

    常见的异常:
    NameError 找不到这个名字 变量或者函数 ValueError 在调用一个函数时给的值不正确 TypeError 类型错误 ZeroDivisionError 除数不能为0 KeyError 没有这个key IndexError 索引不存在 StopIteration 没有更多的值可以迭代 FileNotFoundError 文件不存在 io.UnsupportedOperation 文件的操作不支持 AttributeError 没有这个属性 KeyboardInterrupt 程序被强行终止
    异常处理写法:
    多异常类型处理
    try:
        name
        [][1]
        1/0
    except NameError:
        print('name')
    except IndexError:
        print('list')
    except ZeroDivisionError:
        print('zero')
    
    ===>
    name 
    
    强调:一旦try 中有代码抛出了异常 后面的代码全都不执行
    
    
    多异常类型处理2
    try:
        name
        [][1]
        1/0
    except (NameError,IndexError,ZeroDivisionError):
        print('name,list,zero')

    万能异常类型 Exception 或者 BaseException  基于面向对象的继承与多态

    try:
        name
        [][1]
        1/0
    except Exception:
        print('name,list,zero')

    不常用的语法

    try:
        name
    
    except Exception:
        print('name')
    else:
        print('代码正确')#try中没有发生异常时运行
    finally:
        print('===>')#不管有没有发生异常都会运行

    在下面的代码必须依赖上面代码的正确数据时可以使用断言

    name = 'xia'
    assert name == 'egon' #代码错误时可以抛出一个AssertionError 来表表示断言失败
    print(name)

    自定义异常类型

    主动抛出异常:
    Class =input('请输入班级名')
    if Class == 'python':
        print('yes')
    else:
        raise ValueError('你输入的班级名不对')
    
    自定义异常:
    class CusError(BaseException):
        def __init__(self,name):
            self.name =name
    
    def func():
        ls = input('y/n:')
        if ls == 'y':
            print('正确')
        else:
            raise CusError('xia')# 主动抛出异常
    try:
        func()
    except CusError as e:#使用e来获取异常对象
        print(e.name)
    例子

     

  • 相关阅读:
    Hbase-06-Snapshot原理
    Hbase-05-备份表数据
    Hbase-04-hbck
    Python Exception Handling
    10.TiPD 调度
    8.存储引擎TiFlash
    6.TiDB数据库的存储
    7.存储引擎TiKV
    4.Tidb SQL优化(一)
    5.TiDB SQL优化(二)
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9892407.html
Copyright © 2011-2022 走看看