擅长:python、mysql、java
<p>您当前的代码运行良好,但通常您不希望捕获<code>Exception</code>,因为这会掩盖代码中的其他错误。例如,如果我把你的代码片段放在一个文件中,然后运行它……即使我没有导入<code>vobject</code>模块,我也不会收到错误消息。这是因为该代码实际上引发了<code>NameError</code>:</p>
<pre><code>Traceback (most recent call last):
File "foo.py", line 2, in <module>
vobj = vobject.readOne(vcard_readable)
NameError: name 'vobject' is not defined
</code></pre>
<p>但是因为你捕捉到了所有的异常,所以你把它藏起来了。一种更好的技术是只捕获您期望从<code>vobject</code>模块接收的特定异常,并让其他异常正常渗透。在</p>
<p>对于<code>vobject</code>,它引发的所有异常都将是<code>vobject.base.VObjectError</code>的子类,因此以下代码就足够了:</p>
^{pr2}$