zoukankan      html  css  js  c++  java
  • 107.捕获异常

    捕获异常

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

    简单的捕获异常语法

    语法格式:

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

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

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

    需求:用户输入整数

    分支判断方式:

    # 引导用户输入一个数字
    num = input("请输入数字:")
    if not num.isdigit():
        print("请输入正确的数字")

    捕获异常方式:

    try:
        # 引导用户输入一个数字
        num = int(input("请输入数字:"))
    except:
        print("请输入正确的数字")

    捕获异常类型

    捕获单个异常类型

    在程序执行时,可能会遇到一种类型的异常,并且要对这种类型的异常,做出对应的响应,这个时候,就需要对该类型进行捕获异常了。

    语法格式:

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

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

    except如果不是对应异常类型,下方编写尝试失败的代码

    捕获多个异常类型

    在程序执行时,可能会遇到多种种类型的异常,并且要对多种类型的异常,做出相同的响应,这个时候,就需要对多种类型进行捕获异常了。

    语法格式:

    try:
        尝试执行的代码
    except (异常类型1, 异常类型2, ...):
        出现错误的处理

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

    except如果不是对应多个异常类型,下方编写尝试失败的代码

    在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就需要对多种类型分别进行捕获异常类型了。

    语法格式:

    try:
        # 尝试执行的代码1(可能会发送错误类型1异常)
        # 尝试执行的代码2(可能会发送错误类型2异常)
        # 尝试执行的代码3(可能会发送错误类型3异常)
    except 错误类型1:
        # 针对错误类型1,对应的代码处理
    except (错误类型2, 错误类型3):
        # 针对错误类型2 和 3,对应的代码处理
    需求:

    1.提示用户输入一个整数

    2.使用10除以用户输入的整数并且输出

    try:
        num = int(input("请输入整数:"))
        ret = 10 / num
        print(ret)
    except ValueError:
        print("请输入正确的整数")
    except ZeroDivisionError:
        print("0不能作为除数")

    捕获未知类型异常

    在开发时,要预判到所有可能出现的错误,还是有一定难度的,如果希望程序无论出现任何错误,都不会因为 Python解释器抛出异常而被终止,可以再增加一个except。

    语法格式:

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

    获取异常的信息描述

    # 例如示例异常:
    NameError: name 'num' is not defined
    # NameError -> 异常类型
    # name 'num' is not defined -> 异常的信息描述

    语法格式:

    try:
        # 尝试执行的代码1(可能会发送错误类型1异常)
        # 尝试执行的代码2(可能会发送错误类型2异常)
        # 尝试执行的代码3(可能会发送错误类型3异常)
    except 错误类型1 as e:
        # 针对错误类型1,对应的代码处理
        # 变量e保存的是异常的信息描述
    except (错误类型2, 错误类型3) as e:
        # 针对错误类型2 和 3,对应的代码处理
        # 变量e保存的是异常的信息描述
    except Exception as e:
        # 针对未知错误,对应的代码处理
        # 变量e保存的是异常的信息描述

    异常捕获完整语法

    在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下。

    语法格式:

    try:
        # 尝试执行的代码
    except 错误类型1:
        # 针对错误类型1,对应的代码处理
    except 错误类型2:
        # 针对错误类型2,对应的代码处理
    except (错误类型3, 错误类型4):
        # 针对错误类型3 和 4,对应的代码处理
    except Exception as e:
        # 针对未知错误,对应的代码处理
        # 变量e保存的是异常的信息描述
    else:
        # 只有在没有异常时才会执行的代码
    finally:
        # 无论是否有异常,都会执行的代码

    例子:

    捕获异常:

    # FileNotFoundError: [Errno 2] No such file or directory: 'hm.txt'
    
    # FileNotFoundError 异常类型
    # [Errno 2] No such file or directory: 'hm.txt' 异常的信息描述
    
    
    # try:
    #     f = open("hm.txt", "r")
    # except:
    #     print("如果发生异常 进行捕获完成后 将要做的事情")
    
    
    # 分支判断
    # num = input("请输入一个数字:")
    # if not num.isdigit():
    #     print("请正确的输入一个数字")
    
    # 捕获异常
    try:
        num = int(input("请输入一个数字:"))
    except:
        print("请正确的输入一个数字")

    例子2:

    捕获异常类型:

    # 捕获单个异常类型
    """
    try:
        执行可能会发生异常的代码
    except 异常类型:
        如果发生异常 捕获成功后做的事情
    """
    # try:
    #     a = 10 / 0
    # except ZeroDivisionError:
    #     print("0不能做除数...")
    
    # 捕获多个异常类型
    # try:
    #     print(num)
    #     a = 10 / 0
    # except ZeroDivisionError:
    #     print("0不能做除数...")
    # except NameError:
    #     print("变量名不存在...")
    
    # try:
    #     print(num)
    #     a = 10 / 0
    # except (ZeroDivisionError, NameError):
    #     print("无论谁发生异常 做的事情均一样")
    
    # 捕获未知类型异常
    # try:
    #     open("hm.txt", "r")
    # except Exception:
    #     print("捕获到了异常")

    例子3:

    获取异常的信息描述:

    # 定义了一个变量保存异常的信息描述
    # 捕获单个类型异常
    # try:
    #     print(num)
    # except NameError as e:
    #     print(e)
    
    # 捕获多个异常类型
    # try:
    #     # print(num)
    #     a = 10 / 0
    # except (NameError, ZeroDivisionError) as e:
    #     print(e)
    
    # 捕获未知的异常类型
    # try:
    #     open("hm.txt", "r")
    # except:
    #     print("捕获到了异常")
    #等价
    try:
        open("hm.txt", "r")
    except Exception as e:
        print("捕获到了异常", e)

     例子4:

    捕获异常的完整语法:

    # 捕获异常
    try:
        # num = 10
        print(num)
    except:
        # 如果try执行的代码发生异常 将执行except中的代码
        print("except")
    else:
        # 如果try执行的代码 没有发生异常 将执行else中的代码
        print("else")
    finally:
        # 如果try执行的代码 无论发生异常与否 都会执行finally的代码
        print("finally")
  • 相关阅读:
    运算
    使用mysql出现错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '??????' in 'field list'
    POI-HSSF and POI-XSSF
    java pio项目使用
    mysql安装及卸载
    pdf转word
    【android studio】android studio使用过程中,搜集的一些问题
    github提交失败并报错java.io.IOException: Authentication failed:
    收集的github的东西
    Material Design
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12881693.html
Copyright © 2011-2022 走看看