在python中的函数调用之外重新打印错误

时间:2017-10-11 13:47:20

标签: python error-handling

我对python很新,并尝试处理一个错误,允许我显示导致失败的两个点。一个变量在函数内,另一个变量在函数外。我的尝试是以下代码:

def fun(x):
    z = 0.5 * x
    if z == 1.0:
        return z
    else:
        raise Exception('z is not 1.0')

if __name__ == '__main__':
    y = 9.0
    x = y / 4.0
    try:
        print fun(x)
    except fun as err:
        print 'y is %f' % y
        print err

所以,如果y = 8.0,那么x = 2.0z = 1.0就好了。但是,如果y = 9.0然后z != 10,我希望显示错误和y的值。 y无法访问fun(),因此我可以在那里完成。

我意识到这是一个毫无意义的例子。实际上,我将一行数据从文件传递到fun(),并且我希望fun()抛出错误,该行的哪一部分会导致错误,但它不会导致错误。知道文件名。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用您的外部try/except来抓住并回复Exception内的预期fun()

你基本上拥有它,只需要将except fun as err:更改为except Exception as err:

def fun(x):
    z = 0.5 * x
    if z == 1.0:
        return z
    else:
        raise Exception('z is not 1.0')

if __name__ == '__main__':
    y = 9.0
    x = y / 4.0
    try:
        print fun(x)
    except Exception as err:
        print 'y is %f' % y
        print err