• Python3 错误和异常一篇就够了


    1.错误和异常

    Python 的语法错误或者称之为解析错,是初学者经常碰到的

    语法分析器会指出错的一行,并且在最先找到的错误的位置标记一个小小的箭头。

    即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

    大多数的异常都不会被程序处理,都以错误信息的形式展现


    2.异常处理

    try/except

    异常捕捉可以使用 try/except 语句。

    在这里插入图片描述

    以下例子中,让用户输入一个合法的整数,但是允许用户中断这个程序(使用 Control-C 或者操作系统提供的方法)。用户中断的信息会引发一个KeyboardInterrupt 异常。

    while True:
        try:
            x = int(input("请输入一个数字:"))
            break
        except ValueError:
            print("您输出的不是数字!")
            # 请输入一个数字:ee
            # 您输出的不是数字!
            # 请输入一个数字:12 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行

    try/except…else

    try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。

    else 子句将在 try 子句没有发生任何异常的时候执行。

    在这里插入图片描述

    try-finally

    try-finally 语句无论是否发生异常都将执行最后的代码。

    在这里插入图片描述

    以下实例中 finally 语句无论异常是否发生都会执行:

    while True:
        try:
            x = int(input("请输入一个数字:"))
            break
        except ValueError:
            print("您输出的不是数字!")
            # 请输入一个数字:ee
            # 您输出的不是数字!
            # 请输入一个数字:12
        finally:
            print("我无论如何都会被执行!")
            # 请输入一个数字:12
            # 我无论如何都会被执行!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3.抛出异常

    Python 使用 raise 语句抛出一个指定的异常。

    raise语法格式如下:

    raise [Exception [, args [, traceback]]]
    
    • 1

    在这里插入图片描述

    以下实例如果 x 大于 5 就触发异常:

    x = 10
    if x > 5:
        raise Exception('{}大于5了!'.format(x))
        # Exception: 10大于5了!
    
    • 1
    • 2
    • 3
    • 4

    4.assert(断言

    Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。

    断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件。

    在这里插入图片描述

    语法格式如下:

    assert expression
    
    • 1

    等价于:

    if not expression:
        raise AssertionError
    
    • 1
    • 2

    assert 后面也可以紧跟参数:

    assert expression [, arguments]
    
    • 1

    等价于:

    if not expression:
        raise AssertionError(arguments)
    
    • 1
    • 2

    以下实例判断当前系统是否为 Linux,如果不满足条件则直接触发异常,不必执行接下来的代码:

    import sys
    
    assert ('linux' in sys.platform), "该代码只能在Linux上执行"
    
    • 1
    • 2
    • 3

    5.with

    读者可能觉得,即要打开文件又要关闭文件,还要关注异常处理,有点烦琐,所以Python提供了一个with语句,利用这个语句抽象出文件操作中频繁使用的try/except/finally相关的细节

    with open('index.txt', 'r') as f:
        read_data = f.read()
        print(read_data)
    
    print(f.closed)  # True
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    Kafka第一讲:应用场景及架构设计详解
    小程序 表单当用户修改字段,点击返回检测用户是否有修改
    【数据结构与算法分析】0基础带你学数据结构与算法分析07--二叉树
    mybatis、mybatisPlus
    科学清理Windows系统垃圾,让你的电脑性能快如火箭
    react 或者 vue,如何做 SEO 优化?
    Web服务(10)——Tomcat服务
    KT6368A蓝牙双模芯片关于晶振的选型以及频率误差的测试总结
    毕业图形采集【个人】
    手机上玩.NET的两种方式
  • 原文地址:https://blog.csdn.net/Gherbirthday0916/article/details/126808370