• Python——错误和异常


    💦 语法错误

    如果错误信息是以“SyntaxError”开头,就说明python解释认为这是一个语法错误。例如👇:

    print while True:
    #SyntaxError: Missing parentheses in call to 'print'. Did you mean print(while True:)?
    
    • 1
    • 2

    python不会完整运行带有语法错误的程序。

    💦 异常

    即使python程序的语法是正确的,但是在运行的时候也可能会发生一些预想之外的错误。运行时检测到的错误被称为异常,有些错误可能并不是致命的,但如果程序对大多数的异常都不做处理,python解释器会输出异常信息到屏幕上并终止程序。例如👇:

    print(1 / 0)				#错误
    print('hello world')		#不会被执行
    #ZeroDivisionError: division by zero
    
    • 1
    • 2
    • 3

    再例如👇:

    print(a * 4)
    #NameError: name 'a' is not defined
    
    • 1
    • 2

    python中还有很多形形色色的异常类型,可自行查阅官方文档了解。

    💦 处理异常

    异常是在程序运行时才会检测到的错误,有时候是不可预期的。有些错误也不是致命的,我们并不希望它们影响程序的完整运行,而python中提供了友善的方式可以让我们处理异常。例如👇:

    while True:
        number = int(input("请输入一个数字:"))
    #请输入一个数字:1
    #请输入一个数字:2
    #请输入一个数字:a
    #ValueError: invalid literal for int() with base 10: 'a'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行上面的例子,当输入的是非数字内容,程序就会报错并退出。如果我们不希望因为输入了一些不符合规范的数据而使程序出错不能运行(例如用户在手机APP上输入一些内容之后APP突然异常退出,这是非常不好的体验),这时候我们就需要处理这些异常,确保程序不会无故退出。例如👇:

    while True:
        try:
            number = int(input("请输入一个数字:"))
        except ValueError:
            print("您输入的恐怕不是一个有效的数字!请重试")
    #请输入一个数字:1
    #请输入一个数字:2
    #请输入一个数字:a
    #您输入的恐怕不是一个有效的数字!请重试
    #请输入一个数字:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这个程序使用了两个新关键字: t r y try try e x c e p t except except。这两个关键字用于捕获异常并让我们运行相应的代码去处理异常。

    ☁️ try-except

    它的语法如下👇:

    try:
    	业务语法块
    except 异常类型:
    	处理异常语法块
    except...			#可以有多个except
    
    • 1
    • 2
    • 3
    • 4
    • 5

    t r y try try业务语法块中,产生任何的异常都会终止业务语法块并跳转到 e x c e p t except except匹配异常类型。如果匹配得上,则运行处理异常的语法块,否则程序就报错退出。

    💦 抛出异常

    前面的例子都是系统抛出的异常,在python中我们也可以主动抛出异常。可使用 r a i s e raise raise语句在python中抛出一个指定的异常,例如👇:

    raise Exception
    
    • 1

    它的情况就跟下面的一样。

    在这里插入图片描述
    前面的例子输出了一个没有任何内容的异常,错误信息是空的。我们也可以指定输出一个有错误内容的异常,例如👇:

    raise Exception("这是错误信息")
    
    • 1

    其输出结果为:
    在这里插入图片描述

    💦 finally子句

    python中的 f i n a l l y finally finally子句需要和 t r y try try子句一起使用。 f i n a l l y finally finally子句在异常处理中的作用是:无论是否有异常或者是捕获了异常, f i n a l l y finally finally都会保证执行。例如👇:

    try:
        print(1 / 0)
    except ZeroDivisionError:
        print("除零错误")
    finally:
        print("仍然执行")
    #除零错误
    #仍然执行
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    form-serialize插件,快速收集表单元素的值
    计算机毕设(附源码)JAVA-SSM旅行组团服务管理系统
    个人博客文章目录索引(持续更新中...)
    在k8s中 ,数据包是怎么从外部流转进入到pod的?
    docker-compose
    Redis常用命令
    纳什均衡及经典案例(2)
    软件工程师:机器学习也需要学习?
    网络协议之:socket协议详解之Unix domain Socket
    flex布局 H5携程移动端头部个人中心和图标 (三)
  • 原文地址:https://blog.csdn.net/weixin_62917800/article/details/126481033