使用raise语句抛出异常

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

如果某个函数或方法可能会产生异常,但不想在当前函数或方法中处理这个异常,则可以使用raise语句在函数或方法中抛出异常。raise语句的语法格式如下:

raise [ExceptionName[(reason)]]

其中,ExceptionName[(reason)]为可选参数,用于指定抛出的异常名称以及异常信息的相关描述。如果省略,就会把当前的错误原样抛出。

说明:ExceptionName(reason)参数中的“(reason)”也可以省略,如果省略,则在抛出异常时,不附带任何描述信息。

例如,修改实例02,加入限制苹果数量必须大于或等于小朋友的数量,从而保证每个小朋友都能至少分到一个苹果。

图标 (35)

  实例03  模拟幼儿园分苹果(每个人至少分到一个苹果)

在IDLE中创建一个名称为division_apple_1.py的文件,然后将实例02的代码全部复制到该文件中,并且在第5行代码“children = int(input("请输入来了几个小朋友:"))”的下方添加一个if语句,实现当苹果的数量小于小朋友的数量时,应用raise语句抛出一个ValueError异常,接下来再在最后一行语句的下方添加except语句处理ValueError异常,修改后的代码如下:

def division():

    '''功能:分苹果'''

    print("\n===================== 分苹果了 =====================\n")

    apple = int(input("请输入苹果的个数:"))           # 输入苹果的数量

    children = int(input("请输入来了几个小朋友:"))

    if apple < children:

        raise ValueError("苹果太少了,不够分...")

    result = apple // children                       # 计算每人分几个苹果

    remain = apple - result * children                  # 计算余下几个苹果

    if remain > 0:

        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result,

              "个,剩下", remain, "个。")

    else:

        print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")

if __name__ == '__main__':

    try:                                           # 捕获异常

        division()                                     # 调用分苹果的函数

    except ZeroDivisionError:                             # 处理ZeroDivisionError异常

        print("\n出错了 ~_~ ――苹果不能被0个小朋友分!")

    except ValueError as e:                            # ValueError

        print("\n出错了 ~_~ ――",e)

执行程序,输入苹果的数量为5,小朋友的数量为10时,将出现如图10所示的出错提示。

图10  苹果的数量小于小朋友的数量时给出的提示

说明:在应用raise抛出异常时,要尽量选择合理的异常对象,而不应该抛出一个与实际内容不相关的异常。例如,在实例03中,想要处理的是一个和值有关的异常,这时就不应该抛出一个IndentationError异常。

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值