擅长:python、mysql、java
<p>当您使用try-except处理异常时,您将按名称捕获异常,因此使用特定名称有助于您处理异常</p>
<p>例如,如果函数因任何错误而引发<code>Exception</code>,则捕获逻辑将变得复杂:</p>
<pre><code>def foobar():
if FOO:
raise Exception('FOO happened')
elif BAR:
raise Exception('BAR happened')
try:
foobar()
except Exception as e:
if e.args == ('FOO happened',):
print('Handling FOO')
elif e.args == ('BAR happened',):
print('Handling BAR')
else:
raise
</code></pre>
<p>另一方面,如果您有子类异常,捕获逻辑很简单:</p>
<pre><code>class FooError(Exception):
pass
class BarError(Exception):
pass
def function():
if FOO:
raise FooError('FOO happened')
elif BAR:
raise BarError('BAR happened')
try:
function()
except FooError:
print('Handling FOO')
except BarError:
print('Handling BAR')
</code></pre>