擅长:python、mysql、java
<p>这是一个非常常见的场景,因此我编写了一个“ignore_exception”decorator,它适用于抛出异常而不是优雅地失败的各种函数:</p>
<pre><code>def ignore_exception(IgnoreException=Exception,DefaultVal=None):
""" Decorator for ignoring exception from a function
e.g. @ignore_exception(DivideByZero)
e.g.2. ignore_exception(DivideByZero)(Divide)(2/0)
"""
def dec(function):
def _dec(*args, **kwargs):
try:
return function(*args, **kwargs)
except IgnoreException:
return DefaultVal
return _dec
return dec
</code></pre>
<p>在您的案例中的用法:</p>
<pre><code>sint = ignore_exception(ValueError)(int)
print sint("Hello World") # prints none
print sint("1340") # prints 1340
</code></pre>