zoukankan      html  css  js  c++  java
  • 异常

    异常的概念

    。程序在运行时,如果Python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,就是异常

    。程序停止执行并且提示错误信息这个动作,我们通常称之为:抛出(raise)异常

    程序开发时,很难将所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性

    捕获异常

    在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try(尝试)来捕获异常

    语法:

    try:
        尝试执行的代码
    except:
        出现错误的处理

    。try尝试,下方编写要尝试代码,不确定是否能够正常执行的代码

    。except如果不是,下方编写尝试失败的代码

    错误类型捕获

    在程序执行时,可能遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就需要捕获错误类型了

    语法如下:

    try:
        # 尝试执行的代码
    except 错误类型1:
        # 针对错误1,对应的处理
    except 错误类型2:
        #针对错误2,对应的处理
    except Exception as result:
        print("位置错误 %s" % result)

    。当Python解释器抛出异常时,最后一行错误信息的第一个单词就是错误类型

    异常捕获完整语法

    语法如下:

    try:
        #尝试执行的代码
    except 错误类型1:
        # 针对错误类型1,对应的代码处理
    except 错误类型2:
        # 针对错误类型2,对应的代码处理
    except (错误类型3,错误类型4)
        # 针对错误类型3,4,对应的代码处理
    except Exception as result:
        # 打印错误类型
    else# 没有异常才会执行的代码
    finally# 无论是否有异常,都会执行的代码

    else只有在没有异常时才会执行的代码

    finally无论是否有一场,都会执行的代码

    异常的传递

    。异常的传递——当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方

    。如果传递到主程序,仍然没有异常处理,程序才会被终止

    提示:

    。在开发中,可以在主函数中增加异常捕获

    。而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中

    。这样就不需要再代码中,增加大量的异常捕获,能够保证代码的整洁

    示例:

    def demo1():
        return int(input("请输入整数:"))
    
    
    def demo2():
        return demo1()
    
    # 利用异常的传递性,在主程序捕获异常
    try:
        print(demo2())
    except Exception as result:
        print("未知错误 %s" %result)

    抛出raise异常

    。在开发中,处理代码执行错误Python解释器会抛出异常之外,还可根据业务需求主动抛出异常

    示例:

    def input_password():
        # 1.提示用书输入密码
        pwd = input("输入密码:")
    
        # 2.判断密码长度 >=8,返回用户输入的密码
        if len(pwd) >= 8:
            return pwd
    
        # 3.如果<8主动抛出异常
    
        # 创建异常对象
        ex = Exception("长度不够")
    
        # 主动抛出异常
        raise ex
    
    try:
        print(input_password())
    except Exception as result:
        print(result)
  • 相关阅读:
    flask 非要将视图和app放在一个空间
    spring mvc 实用的思想
    不能在windows上使用但值得关注的项目
    AI 医疗
    我也是混乱了同步盘和网盘
    常用free文献数据库
    机器学习中如何处理不平衡数据?
    自己制作的学习笔记视屏,还有记录的代码。
    函数的指针(一)写一个能对任意数组排序的冒泡排序
    自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
  • 原文地址:https://www.cnblogs.com/MammothManny/p/8665005.html
Copyright © 2011-2022 走看看