1
下面的例子僅僅是一個黑客,因爲我不知道更好它:如何收集幾個錯誤來提出這些總結?
class ErrorCollector(Exception):
def __init__(self):
self.errors = []
def __nonzero__(self):
return bool(self.errors)
def do_something(a, b):
err = ErrorCollector()
try:
int(a)
except Exception:
err.errors.append('{!r} fails'.format(a))
try:
int(b)
except Exception:
err.errors.append('{!r} fails'.format(b))
if err:
raise err
def run(*args):
err = ErrorCollector()
for arg in args:
try:
do_something(*arg)
except Exception as e:
err.errors.extend(e.errors)
if err:
print 'You have these problems:\n{}'.format('\n'.join(err.errors))
我怎樣才能做得更好?我之前的解決方案是收集列表中的錯誤描述並將其傳遞給錯誤實例。因此,畢竟這與此處顯示的解決方案類似。
我懷疑有一種方法可以做到這一點。你基本上想要運行代碼,儘管發生了異常,這似乎是不可能的,而且完全錯誤,因爲在定義變量的行期間發生異常之後,引用該變量的任何代碼都會引發NameError,並且您無法做到,而是手動處理默認值。 – teferi