• Python异常处理Error—练习


    异常

    1.定义:运行时检测到的错误。

    2.现象:当异常发生时,程序不会再向下执行,而转到函数的调用语句。

    3.常见异常类型:

    -- 名称异常(NameError):变量未定义。

    -- 类型异常(TypeError):不同类型数据进行运算。

    -- 索引异常(IndexError):超出索引范围。

    -- 属性异常(AttributeError):对象没有对应名称的属性。

    -- 键异常(KeyError):没有对应名称的键。

    -- 未实现异常(NotImplementedError):尚未实现的方法。

    -- 模块异常(ImportError):无法引入模块或包

    -- 输入输出异常(IOErroe):输入输出异常

    -- 语法异常(SyntaxError Python):代码逻辑语法出错,不能执行

    -- 异常基类Exception

    处理

    1.语法:

    try:

        可能触发异常的语句

    except 错误类型1 [as 变量1]

        处理语句1

    except 错误类型2 [as 变量2]

        处理语句2

    except Exception  [as 变量3]

        不是以上错误类型的处理语句

    else:

        未发生异常的语句

    finally:

    无论是否发生异常的语句

    2.作用:将程序由异常状态转为正常流程。

    3.说明:

    as 子句是用于绑定错误对象的变量,可以省略

    except子句可以有一个或多个,用来捕获某种类型的错误。

    else子句最多只能有一个。

    finally子句最多只能有一个,如果没有except子句,必须存在。

    如果异常没有被捕获到,会向上层(调用处)继续传递,直到程序终止运行。

     1 def div_apple(apple_count):
     2   """
     3     分苹果
     4   """
     5   # ValueError
     6   person_count = int(input("请输入人数:"))
     7   # ZeroDivisionError
     8   result = apple_count / person_count
     9   print("每人分到%d个苹果" % result)
    10 
    11 
    12 try:
    13   div_apple(10)
    14 
    15 except ValueError:
    16   print("输入的数据应该是整数")
    17 except ZeroDivisionError:
    18   print("分母不能是0")
    19 except Exception:
    20   print("未知错误")
    21 else:
    22   # 没有异常时执行
    23   print("分苹果成功喽")
    案例
    #请输入人数:0
    #分母不能是0
    
    #请输入人数:a
    #输入的数据应该是整数
    
    #请输入人数:3.5
    #输入的数据应该是整数
    
    #请输入人数:2
    #每人分到5个苹果
    #分苹果成功喽
    View Code

    raise 语句

    1.作用:抛出一个错误,让程序进入异常状态。

    2.目的:在程序调用层数较深时,向主调函数传递错误信息要层层return 比较麻烦,所以人为抛出异常,可以直接传递错误信息。。

    自定义异常

    1. 定义:

    class 类名Error(Exception):

    def __init__(self,参数):

    super().__init__(参数)

    self.数据 = 参数

    2.调用:

    try:

    ….

    raise 自定义异常类名(参数)

    ….

    except 定义异常类 as 变量名:

    变量名.数据

    3.作用:封装错误信息

    练习:定义函数,在控制台中获取成绩(1--100),如果输入有误,请重新输入.

     1 def get_score():
     2   while True:
     3     str_score = input("请输入成绩:")
     4     try:
     5       int_score = int(str_score)
     6     except ValueError:
     7       continue
     8     if 1<=int_score<=100:
     9       return int_score
    10 
    11 print(get_score())
    View Code
  • 相关阅读:
    POJ 2136
    POJ 2121
    POJ 2127
    POJ 2126
    POJ 2109
    POJ 2105
    POJ 2101
    POJ 2075
    Uboot — 配置过程
    Uboot — 编译体验
  • 原文地址:https://www.cnblogs.com/maplethefox/p/10909405.html
Copyright © 2020-2023  润新知