擅长:python、mysql、java
<p>您计划在主代码中捕捉异常,记录它并终止它,这是一个很好的计划。在</p>
<p>可能会有例外,这是很好的,但并不意味着,你应该把它们视为问题,例如<code>KeyboardInterrupt</code></p>
<p>战略可以是:</p>
<ul>
<li>首先,捕获所有异常,您希望这些异常都很好,<code>pass</code></li>
<li>然后捕获general<code>Exception</code>,记录并终止。在</li>
</ul>
<p>代码可能看起来像:</p>
<pre><code>try:
some(stuff) # ...
# First, resolve expected exceptions
except KeyboardInterrupt:
pass
# Finally, log unexpected ones
except Exception as exc:
logger.exception(exc)
return # time to terminate
</code></pre>
<h2>什么时候捕捉异常显式失败</h2>
<p>如果发生意外的异常,那么通过显式地捕捉所有预期的异常来改进的建议很短。您的计划是捕获日志文件中出现的任何内容,这听起来不错,并为以后解决问题提供了足够的信息。在</p>
<p>想象一下,你有一个守护进程,它会一直运行下去。在某些情况下,它可能会失败。在</p>
<p>如果只期望显式异常,则可能发生意外异常,不<code>expect</code>
将有机会将其记录到日志文件中,stacktrace将被打印到stdout并被遗忘
程序终止。在</p>
<p>这是一个很清楚而且非常合理的用例,可以用来捕捉异常。在</p>