Return 部分结果如果出现异常
Return part of result if occur a except
我正在使用 python。我有一个函数 (getAll),它在循环 (getPart) 中调用其他函数,并且在每个步骤中更新 return 值。在某些情况下,当我调用循环内的函数时,会失败。我需要return这一刻的结果。
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
tempResult = getPart(m, d, v)
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
print getAll(5,4,1,'ds',8,'data')
我需要打印结果的部分值,如果我在 getAll 中调用 tempResult 时在某个步骤中发生异常
听起来你需要使用 try,除了块
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
try: #start of the try block.
tempResult = getPart(m, d, v)
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
except: #handle what ever errors comes here
return tempResult
return tempResult
基本上,当您发现错误或出现错误时,它会 运行 except 块中的内容,因为我们输入 return tempResult
它将 return 值。
正如评论所说,捕获所有异常不是一个好主意,因为您可能会遇到与您的代码无关的错误并且它会捕获它,对于您应该做的特定异常:
try:
#do something
except <Error name like "ValueError">
#handle it
您还可以查看更多错误详细信息,例如:
try:
#do something
except ValueError as e:
#handle it
print(e) #prints the error
所以找出什么错误会导致你的程序停止并把它放在那里。
您可以通过用 try/except
包装引发错误的代码来处理异常,然后 在 except
块中打印 结果:
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
try:
tempResult = getPart(m, d, v)
except SomeError: # specify error type
print('The partial result is', result)
raise # re-raise error
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
print getAll(5,4,1,'ds',8,'data')
另一方面,由于您已经知道调用 getPart
可能会引发错误,因此您可以将 try/except
块移动到函数中。这当然取决于您要实现的目标。
这不一定是最好的解决方案,因为根据错误的不同,以这种方式防止它可能比处理它更好。但是,您可以 try(原本没有双关语......)以下内容(其中 WhateverError
是在您的情况下引发的错误):
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
try:
tempResult = getPart(m, d, v)
except WhateverError:
return result
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
print getAll(5,4,1,'ds',8,'data')
尝试将您的方法包装起来,除了块。您可能想要引发异常,以便您也可以响应它。
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
try:
while flag == 0:
tempResult = getPart(m, d, v)
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
except Exception as e:
print e
return result
我正在使用 python。我有一个函数 (getAll),它在循环 (getPart) 中调用其他函数,并且在每个步骤中更新 return 值。在某些情况下,当我调用循环内的函数时,会失败。我需要return这一刻的结果。
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
tempResult = getPart(m, d, v)
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
print getAll(5,4,1,'ds',8,'data')
我需要打印结果的部分值,如果我在 getAll 中调用 tempResult 时在某个步骤中发生异常
听起来你需要使用 try,除了块
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
try: #start of the try block.
tempResult = getPart(m, d, v)
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
except: #handle what ever errors comes here
return tempResult
return tempResult
基本上,当您发现错误或出现错误时,它会 运行 except 块中的内容,因为我们输入 return tempResult
它将 return 值。
正如评论所说,捕获所有异常不是一个好主意,因为您可能会遇到与您的代码无关的错误并且它会捕获它,对于您应该做的特定异常:
try:
#do something
except <Error name like "ValueError">
#handle it
您还可以查看更多错误详细信息,例如:
try:
#do something
except ValueError as e:
#handle it
print(e) #prints the error
所以找出什么错误会导致你的程序停止并把它放在那里。
您可以通过用 try/except
包装引发错误的代码来处理异常,然后 在 except
块中打印 结果:
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
try:
tempResult = getPart(m, d, v)
except SomeError: # specify error type
print('The partial result is', result)
raise # re-raise error
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
print getAll(5,4,1,'ds',8,'data')
另一方面,由于您已经知道调用 getPart
可能会引发错误,因此您可以将 try/except
块移动到函数中。这当然取决于您要实现的目标。
这不一定是最好的解决方案,因为根据错误的不同,以这种方式防止它可能比处理它更好。但是,您可以 try(原本没有双关语......)以下内容(其中 WhateverError
是在您的情况下引发的错误):
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
while flag == 0:
try:
tempResult = getPart(m, d, v)
except WhateverError:
return result
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
print getAll(5,4,1,'ds',8,'data')
尝试将您的方法包装起来,除了块。您可能想要引发异常,以便您也可以响应它。
def getAll(m, d, v, t, s, tn, type):
result = []
flag = 0
try:
while flag == 0:
tempResult = getPart(m, d, v)
for i in range(0, len(tempResult)):
result.append(tempResult[i])
flag = tempResult[0]
return result
except Exception as e:
print e
return result