擅长:python、mysql、java
<p>由于语言的规则,在输入被调用函数的代码之前对参数进行求值(这通常是件好事)。因此,<code>assertRaises</code>无法捕捉参数求值期间发生的异常。解决方法(在多个API中)是将一个可调用的</em>传递给像<code>assertRaises</code>这样的方法,这样它们就可以在它们可以控制的位置和捕捉异常的地方对其进行求值。如果整个参数是一个方法调用,那么绑定方法的魔力使您可以非常优雅地声明这一点,而不必使用<code>lambda</code>或这样的愚蠢:</p>
<pre><code>self.assertRaises(MyException, other.func) # <- note, no parentheses after func
</code></pre>