擅长:python、mysql、java
<p>因此,当您的<code>try/except</code>块接收到<code>BreakIt</code>异常时,它不会做任何事情。因为<code>BreakIt</code>位于<code>while True</code>循环内,所以它一直循环。然后你<code>break</code>对每一个<strong>不是</strong>的异常<code>BreakIt</code>一个。听起来你想做相反的事。在</p>
<p>您可能需要将<code>try/except</code>更改为:</p>
<pre><code>while True:
scb('sleep 5', shell = 'True')
count = 0
# [ . . . ]
class BreakIt(Exception): pass
try:
for line in fl:
# [ . . . ]
except BreakIt:
break
else:
# Do stuff with not BreakIt exceptions
</code></pre>
<p>另外:我强烈建议使用内置的<a href="https://docs.python.org/2/library/exceptions.html#exceptions.StopIteration" rel="nofollow">StopIteration</a>,而不是你的<code>BreakIt</code>。我是说。。。您可以随意创建自己的异常,但在这种特殊情况下,您不需要该类(而且,在循环中定义类是一种不好的做法)</p>