擅长:python、mysql、java
<p>如果您不喜欢重复的<code>if</code>/<code>elseif</code>块,可以将句柄放在dict中,并按类型键入:</p>
<pre><code>handlers = { type(CommonException1()) : Action_always_taken_forCommonException1,
type(CommonException2()) : Action_always_taken_forCommonException2 }
def handle_exception(te):
if te in handlers:
handlers[te]()
else:
Default_action()
</code></pre>
<p>你可以用它来运行:</p>
^{pr2}$
<hr/>
<p><strong>另外:</strong>如果您发现自己经常编写这些try块,那么您可以编写自己的上下文管理器(参见<a href="http://docs.python.org/whatsnew/2.6.html#writing-context-managers" rel="nofollow">here</a>)。在<code>action_here()</code>一侧,您的代码将如下所示:</p>
<pre><code>with my_error_handling_context():
action_here1()
action_here2()
</code></pre>
<p>在本例中,<code>handle_exception</code>代码实质上是上下文管理器的<code>__exit__</code>方法(在with块期间引发的任何异常都将被传递)。在</p>