zoukankan      html  css  js  c++  java
  • Python学习系列之异常处理

    什么是异常处理

    python内置了一套try···except···finally的错误处理机制

    当程序出错的时候进行捕捉,然后根据捕捉到的错误信息进行响相应的处理

    常用的内建异常

    初识异常处理

    如例

    让用户进行输入,提示用户输入一个数字,如果用户输入的是数字就转换成int类型,然后打印用户输出的数字,如果用户输入的不是数字,就会转换出错,如果出错就提示用户输入的类型错误

    try:
        n = int(input("请输入一个数字>>>"))
        print('你输入的是数字',n)
    except Exception as e:
        print('输入类型错误,你应该输入数字')
    finally:
        print('------end------')

    测试

    正确:
    请输入一个数字>>>12
    你输入的是数字 12
    ------end------

    错误: 请输入一个数字>>>aaaaa 输入类型错误,你应该输入数字 ------end------

    分析:

    当我们认为某些代码可能会出错时,就可以用try来运行这段代码

    如果执行出错,则后续代码不会执行,而是直接跳转至错误处理代码,即except语句块

    执行完except后,如果有finally语句块,则执行finally语句块,至此执行完毕

    对不同的异常进行不同的处理

    try:
        n = int(input("请输出一个数字>>> "))
    except ValueError as e:
        print("ValueError错误")
    except Exception as e:
        print("出现异常")

    执行测试

    请输出一个数字>>> 123
    ansheng@Darker:~$ python3 /home/ansheng/文档/Python_code/sublime/Week06/Day04/s2.py
    请输出一个数字>>> asd
    ValueError错误

    在处理异常时,如果出现错误,那么会首先匹配ValueError,然后再匹配Exception

    捕捉多个错误

    try:
        raise IndexError('出错了')
    except (IndexError, NameError) as e:  # 捕获括号内的错误,并把错误信息赋值给e(一个except可以处理多个异常,这些异常将被放在一个括号里成为一个元组)
        print(e)

    错误异常的基本结构

    try:
        # 主代码块
        pass
    except KeyError as e:
        # 异常时,执行该块
        pass
    else:
        # 主代码块执行完,执行该块
        pass
    finally:
        # 无论异常与否,最终执行该块,这块可有可无
        pass

    执行流程

    • 如果出现错误,那么就执行except代码块,然后再执行finnly代码块
    • 如果没有出现错误,那么就执行else代码块,然后再执行finnly代码块
    • 无论有没有异常都执行finnly代码块

    主动抛异常

    try:
        # raise表示主动出发异常,然后创建一个Exception对象,Exception括号内的值就是Exception对象的值
        raise Exception("主动出发的异常")
    except Exception as e:
        # 输出Exception对象的值
        print(e)

    执行测试

    主动出发的异常
  • 相关阅读:
    SQL键值约束、索引使用
    C#字符串的四舍五入
    VB中字符串操作函数
    C#文本选中及ContextMenuStrip菜单使用
    C#关于new的用法
    C#有关日期的使用方法
    break,continue的区别
    在Lua中使用数字的时候有个坑
    关于自动寻径和图、邻接表的学习和启发
    关于在Cocos2dx引擎中手动绑定C++到Lua
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/6374943.html
Copyright © 2011-2022 走看看