在functon args中处理异常的最佳方法是什么?

时间:2017-05-18 11:23:05

标签: python-3.x exception-handling

我最近编写了一些Python 3.x程序,我想知道在python函数args中处理简单异常的最佳方法是什么。在这个例子中,我将检查插入的值是否可以转换为int。我想出了两种方法:

def test_err_try(x, y, z):

    try:
        int(x)
        int(y)
        int(z)
    except ValueError or TypeError:    #try handler
        return 'Bad args.'
    ##code##

def test_err_if(x, y, z):

    if type(x) != int or type(y) != int or type(z) != int:    #if handler
        raise ValueError('Bad args.')
    else:
        ##code##

我知道处理程序返回的内容有所不同 - 在第一种情况下,它只是字符串'Bad args'。在第二个是ValueError异常 什么是最好(或最简单和最短)的方式?第一,第二或两者都没有,哪一个更好?

1 个答案:

答案 0 :(得分:1)

答案取决于您的使用案例。如果要构建一个将向最终用户公开的函数,那么try except块提供了更多功能,因为它将允许任何可以转换为int的变量。在这种情况下,我建议引发错误,而不是让函数返回一个字符串:

try:
    x = int(x)
    y = int(y)
    z = int(z)
except ValueError:
    raise TypeError("Input arguments should be convertible to int")

如果该函数是供程序内部使用的,那么最好使用assert语句,因为在完成程序调试后可以禁用它的评估。

assert type(x) is int
assert type(y) is int
assert type(z) is int