泛型异常处理返回值 [英] generic exception handling return value
本文介绍了泛型异常处理返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
而不是这样做:
try:
...
除了异常:
return list()
尝试:
...
除了异常:
返回dict()
尝试:
...
除了异常:
return str()
我想创建一个系统,我有一个通用的异常处理程序返回我提供的arg。例如,
def handler(代码,默认):
try:
code
except例外:
return default
def mains():
code =<执行代码>
default = str()
返回处理程序(代码,dafault)
在一个更加pythonic的方式
解决方案
一个简单的装饰师会为你做这个。
import functools
def catch_wrap(on_err):
def wrapper(func):
@functools。包裹(func)
def inner(* args,** kw):
try:
return func(* args,** kw)
除了异常:
return on_err
return inner
return wrapper
一个简短的例子:
@catch_wrap('SPAM!')
def doer():
YUP
1/0
return'EGGS!'
print doer()
print doer .__ doc__
I am trying to create generic exception handler - for where I can set an arg to return in case of exception.
instead of doing:
try:
...
except Exception:
return list()
try:
...
except Exception:
return dict()
try:
...
except Exception:
return str()
I would like to create system whereby I have a generic exception handler that returns an arg I provide. e.g,
def handler(code, default):
try:
code
except Exception:
return default
def mains():
code = <code to execute>
default = str()
return handler(code, dafault)
but in a more pythonic way
解决方案
A simple decorator will do this for you.
import functools
def catch_wrap(on_err):
def wrapper(func):
@functools.wraps(func)
def inner(*args, **kw):
try:
return func(*args, **kw)
except Exception:
return on_err
return inner
return wrapper
A short example:
@catch_wrap('SPAM!')
def doer():
"""
YUP
"""
1 / 0
return 'EGGS!'
print doer()
print doer.__doc__
这篇关于泛型异常处理返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文