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)
  • 相关阅读:
    Java集合一
    集合类视图
    NIO
    IO补充
    线程图
    线程池
    Callable
    element-ui upload组件上传图片时限制图片宽高
    vue-router 使用a链接跳转至二级子页面偶尔会出现地址栏看不见路由和参数的情况
    vue中引入jquery报错问题
  • 原文地址:https://www.cnblogs.com/MammothManny/p/8665005.html
Copyright © 2011-2022 走看看