我最近编写了一些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异常 什么是最好(或最简单和最短)的方式?第一,第二或两者都没有,哪一个更好?
答案 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