08-异常

作者: 努力爬行中的蜗牛 | 来源:发表于2018-10-30 16:25 被阅读7次
    异常概念

    程序运行时,如果python解释器遇到一个错误,会停止执行,并且给出一些错误信息提示。这就是异常。
    程序停止执行并且给出错误提示的动作,叫做抛出异常。

    捕获异常

    简单的捕捉异常的语法

    • 程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try(尝试)来捕获异常。
    语法:
    try:
        尝试执行的代码
    except:
        出现错误的处理
    
    try:
        # 不能确定正确执行的代码
        num = int(input("请输入一个整数:"))
    except:
        # 错误的处理代码
        print("请输入正确的整数")
    
    print("-" * 50)
    
    错误类型捕获

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

    try:
        # 提示用户输入一个整数
        num = int(input("输入一个整数:"))
    
        # 使用8除以用户输入的整数并且输出
        result = 8 / num
    
        print(result)
    except ZeroDivisionError:  # 抛出异常的第一个单词
        print("除0错误")
    except ValueError:  # 抛出异常的第一个单词
        print("请输入正确的整数")
    
    捕获未知错误

    如果希望无论出现何种错误,都不会因为python解释器抛出异常而终止,可以再增加一个except。

    语法
    except Exception as result:
        pass
    
    try:
        # 提示用户输入一个整数
        num = int(input("输入一个整数:"))
    
        # 使用8除以用户输入的整数并且输出
        result = 8 / num
    
        print(result)
    except ValueError:  # 抛出异常的第一个单词
        print("请输入正确的整数")
    except Exception as result:
        print("未知错误 %s" % result)
    
    异常捕获的完整语法
    try:
        # 提示用户输入一个整数
        num = int(input("输入一个整数:"))
    
        # 使用8除以用户输入的整数并且输出
        result = 8 / num
    
        print(result)
    except ValueError:  # 抛出异常的第一个单词
        print("请输入正确的整数")
    except Exception as result:
        print("未知错误 %s" % result)
    else:
        # 没有异常才会执行的代码
        print("尝试成功")
    finally:
        # 无论是否有异常,都会执行的代码
        print("无论是否出现异常都会执行的代码")
    
    异常的传递
    • 当函数或者方法出现异常,会将异常传递给函数或者方法调用的一方
    • 如果传递到主程序,仍然没有异常处理,程序才会被终止

    提示:

    • 开发中,可以再主程序中增加异常捕获
    • 而在主程序中调用的其他函数,只要出现异常,都会传递到主函数的异常捕获中
    • 这样就不要在代码中,增加大量的异常捕获,能够保证代码的整洁
    def demo1():
        return int(input("输入整数:"))
    
    
    def demo2():
        return demo1()
    
    
    # 利用异常的传递性,在主程序捕获异常
    try:
        print(demo2());
    except Exception as result:
        print("未知错误 %s" % result)
    
    主动抛出异常-抛出raise异常
    • 在开发中,除了代码执行出错,python解释器抛出异常外
    • 还可以根据应用程序特有的业务需求主动抛出异常

    python提供了一个异常类:Exception,在开发中,如果满足特定业务需求时,需要抛出异常,可以:

    • 创建一个Exception对象
    • 使用raise关键字抛出异常对象
    def input_password():
        # 提示用户输入密码
        pwd = input("请输入密码:")
    
        # 判断密码长度 >= 8,返回用户输入的密码
        if len(pwd) >= 8:
            return pwd
    
        # 如果密码长度 < 8 主动抛出异常
        # 1 创建异常对象
        ex = Exception("密码长度不够")
    
        # 2 主动抛出异常
        raise ex
    
    # 提示用户输入密码
    try:
        print(input_password())
    except Exception as result:
        print(result)
    

    相关文章

      网友评论

          本文标题:08-异常

          本文链接:https://www.haomeiwen.com/subject/syawtqtx.html