• 【Python】异常


    捕获异常

    try:
        num = int(input("请输入一个整数:"))
        result = 8 / num
        print(result)
    except ValueError:
        print("请输入正确的整数")
    except Exception as ret:
        print("未知错误 %s" % ret)
    

    完整语法

    try:
        num = int(input("请输入一个整数:"))
        result = 8 / num
        print(result)
    except 错误类型1:
        # 针对性处理
    except 错误类型2:
        # 针对性处理
    except (错误类型3,错误类型4):
        # 针对性处理
    except Exception as five:
        print(five)
    else:
        # 没有异常才会执行的代码
    finally:
        # 无论是否有异常,都会执行的代码
        print("无论是否有异常,都会执行的代码")
    

    异常的传递

    def demo1():
        return int(input("输入整数:"))
    
    def demo2():
        return demo1()
    
    # 利用异常的传递性,在主程序捕获异常
    try:
        print(demo2())
    except Exception as ret:
        print("[ERROR] %s" % ret)
    else:
        print("ok")
    print('&' * 50)
    

    主动抛出异常

    def input_password():
    
        # 1. 提示用户输入密码
        pwd = input("请输入密码:")
        # 2. 判断密码长度 >=8 ,返回用户输入的密码
        if len(pwd) >= 8:
            return pwd
        # 3. 如果 < 8 主动抛出异常
        print("主动抛出异常")
        # 1> 床架异常对象
        ex = Exception("密码长度不够")
        # 2> 主动抛出
        raise ex
    
    print(input_password())
    

    捕获抛出异常

    def input_password():
    
        # 1. 提示用户输入密码
        pwd = input("请输入密码:")
        # 2. 判断密码长度 >=8 ,返回用户输入的密码
        if len(pwd) >= 8:
            return pwd
        # 3. 如果 < 8 主动抛出异常
        print("主动抛出异常")
        
        # 1> 创建异常对象
        ex = Exception("密码长度不够")
        
        # 2> 主动抛出
        raise ex
    
    try:
        print(input_password())
    except Exception as re:
        print(re)
    
    1. 违反规则的都是异常
    2. 自己写的程序,自己就是上帝
    3. 主动抛出异常,异常当作执行语句来抛出,不阻断程序的运行
  • 相关阅读:
    python基础——dict和set(字典和集合)
    python基础——循环(for,while,break,continue)
    python基础——条件判断
    python基础——list和tuple(列表和元组)
    python基础——字符串、编码、格式化
    Linux 新建线程 简单使用
    Android 原始套接字
    QTextEdit/QPlainTextEdit 等_默认的滚动条_宽度调节
    494. Target Sum
    670. Maximum Swap
  • 原文地址:https://www.cnblogs.com/liudianer/p/11688733.html
Copyright © 2020-2023  润新知