<p>我有很多函数可以解析文件中的数据,通常返回结果列表。在</p>
<p>如果我在文件中遇到一个不可靠的行,我想继续处理有效的行,然后返回它们。但我还想向调用函数报告错误。我要报告它的原因是,调用函数可以通知用户文件需要查看。我不想在parse函数中开始做GUI操作,因为这似乎严重违反了关注点分离。parse函数无法访问我正在向其写入错误消息的控制台。在</p>
<p>这使得我想要返回成功的数据,但也因为错误而引发了一个异常,这显然是我做不到的。在</p>
<p>考虑以下代码:</p>
<pre><code>try:
parseResult = parse(myFile)
except MyErrorClass, e:
HandleErrorsSomehow(str(e))
def parse(file): #file is a list of lines from an actual file
err = False
result = []
for lines in file:
processedLine = Process(line)
if not processedLine:
err = True
else
result.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(processedLine)
return result
if err:
raise MyErrorClass("Something went wrong")
</code></pre>
<p>很明显最后三行没有意义,但我想不出一个好的方法来做这件事。我想我可以这样叫它</p>
^{pr2}$
<p>但是返回错误代码似乎已经不是python了,更不用说返回错误代码和实际结果值的元组了。在</p>
<p>事实上,我觉得我想在一个不应该太复杂的应用程序中做一些奇怪的事情,这让我觉得我可能做错了什么。这个问题有更好的解决办法吗?或者有什么方法可以使用<code>finally</code>来返回值并同时引发异常?在</p>