美文网首页
函数(1)--返回异常

函数(1)--返回异常

作者: 小懒额 | 来源:发表于2018-05-01 23:08 被阅读0次
第14条:尽量用异常来表示特殊情况,而不要返回 None

在 python 编程时,如果一个函数的返回结果和 False 等效,那么就容易造成运算结果和函数过程异常的混淆,如:

def divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return None

result = divide(x, y)
if not result:
    print('Invalid inputs')

这里的函数在做除法运算时,如果分母为 0 时,会进入 ZeroDivisionError 异常,然后返回 None,似乎是可以正常使用的。但是如果分子为 0 时,运算结果为 0,if not 语句判断成立,这时认为时由于不合法输入导致的。
最好的做法是抛异常到上一级,让调用者无法偷懒,如:

def divide(a, b):
    try:
        return a / b
    except ZeroDivisionError as e:
        raise ValueError('Invalid inputs') from e


x, y = 5, 2
try:
    result = divide(x, y)
except ValueError:
    print('Invalid inputs')
else:
    print('Result is %1.f' % result)

这样如果函数运算出错,或者不合法,直接作为异常抛出,让调用者不得不进行处理,而不是简单地 if not 语句判断。

相关文章

  • 函数(1)--返回异常

    第14条:尽量用异常来表示特殊情况,而不要返回 None 在 python 编程时,如果一个函数的返回结果和 Fa...

  • 15/4

    异常: 1.调用abort()函数:程序退出 2.使用返回值,当出现异常时返回false,主动终止程序 3.异常机...

  • TypeScript nerver 函数

    永远都不会有返回的函数:1、函数抛出异常 2、永远执行下去的函数

  • 我眼中的Promise对象是怎么使用的?

    目录 1、更友好地处理异步函数的异常问题2、更友好地处理异步函数的返回值3、解决地狱回调函数(Callback H...

  • C++异常处理机制

    1、C函数的调用和返回 要理解C++异常机制实现之前,首先要了解一个函数的调用和返回机制,这里面就要涉及到ESP和...

  • 廖雪峰 | 5.1 返回函数和匿名函数

    返回函数 1,实例1:可变参数求和(1)即时返回求和结果 (2)返回求和函数,调用该函数则得结果 在函数lazy_...

  • Python语言基础之——函数进阶

    1.函数的返回值 1.什么是返回值 返回值是函数从函数里面传递到函数外面的数据1)怎么返回返回值就是return关...

  • 19-01-07b变量作为函数的返回值=高阶函数

    4.变量作为函数的返回值函数1作为函数2的返回值 - 函数2是返回值高阶函数

  • golang笔记——异常处理

    函数返回值处理异常 golang为了避免像写Java一样滥用try catch,可以使用函数多返回值的特性来进行异...

  • swift学习笔记(6)--- 函数

    1、函数的定义与调用 2、函数参数与返回值 无参数函数 多参数函数 无返回值函数 多重返回值函数 可选元组返回类型...

网友评论

      本文标题:函数(1)--返回异常

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