• python--异常处理


    异常

    lis = ['zouzou', 'jack', 'bob']
    name = {'001': 'hello'}
    try:
        print(lis[3])
        print(name['002'])
    
    except KeyError as e:  # 将具体的错误信息赋值给e
        print('没有这个key:', e)
    
    except IndexError as e:
        print('列表操作错误:', e)

    结果

    列表操作错误: list index out of range

    出一个错就不往下执行了

    也可以这样写

    lis = ['zouzou', 'jack', 'bob']
    name = {'001': 'hello'}
    try:
        print(lis[3])
        print(name['002'])
    
    except (KeyError, IndexError) as e:
        print('没有这个key:', e)

    抓住所有错误

    lis = ['zouzou', 'jack', 'bob']
    name = {'001': 'hello'}
    try:
        print(lis[3])
        print(name['002'])
    except Exception as e:  # 基本上能抓住所有异常,缩进等 一些异常抓不了
        print('出错了,错误为:', e)

    结果

    出错了,错误为: list index out of range
    lis = ['zouzou', 'jack', 'bob']
    name = {'001': 'hello'}
    try:
    
        open('test.txt')
    
    except IndexError as e:
        print('列表错误:', e)
    
    except KeyError as e:
        print('key错误:', e)
    
    except Exception as e:  # 上面的错误都不是时执行这里的
        print('未知错误')

    结果

    未知错误

    else在没有异常时执行

    lis = ['zouzou', 'jack', 'bob']
    name = {'001': 'hello'}
    try:
    
        print(lis[0])
    
    except IndexError as e:
        print('列表错误:', e)
    
    except KeyError as e:
        print('key错误:', e)
    
    except Exception as e:  # 上面的错误都不是时执行这里的
        print('未知错误', e)
    
    else:
        print('一切正常')  # 没有异常时执行

    结果:

    zouzou
    一切正常
    lis = ['zouzou', 'jack', 'bob']
    name = {'001': 'hello'}
    try:
    
        print(lis[6])
    
    except IndexError as e:
        print('列表错误:', e)
    
    except KeyError as e:
        print('key错误:', e)
    
    except Exception as e:  # 上面的错误都不是时执行这里的
        print('未知错误', e)
    
    else:
        print('一切正常')  # 没有错误时执行
    
    finally:
        print('不管有没有错都执行')  # 不管有没有错都执行,无论如何都会执行 操作系统资源归还的工作

    结果

    列表错误: list index out of range
    不管有没有错都执行

    自定义异常

    class LfjException(Exception):  # 继承异常的基类
        def __init__(self, msg):
            self.message = msg
    
        def __str__(self):
            return self.message
    
    
    try:
        raise LfjException('我的异常')
    
    except LfjException as e:
        print(e)  # 打印的是self.message的值,self.message这 里的值是raise LfjException('我的异常'),括  号里的值

    结果:

    我的异常

    raise主动抛异常

    try:
        num = int(input('>>>'))
    except Exception:
        print('在出现了异常之后做点儿什么,再让它抛异常')
        raise  # 原封不动的抛出try语句中出现的异常
  • 相关阅读:
    BubbleGum96 开箱杂谈与软件资源
    Intel Edision —— 从SSH无法连接到systemd
    Intel Edision —— 开发环境选择一贴通
    Intel Edision —— 上电、基本设置与系统初探
    使用RPi-Monitor监控、统计Guitar的运行状态
    吃我一记咸鱼突刺——使用板载RTC定时开机
    Intel Edison —— 控制GPIO接口,网页显示传感器数值
    docker on UP Board
    Android源码分析--CircleImageView 源码详解
    如何自定义一个优雅的ContentProvider
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/13236655.html
Copyright © 2020-2023  润新知