python - 如何减少重复的try / catch块?

时间:2017-12-05 04:51:53

标签: python

我是python的新手,正在使用python包装器为C ++ API编写内部工具的CLI包装器,并发现自己不断定义具有相同try / catch块的函数,唯一的区别是对API的单一调用。

例如......

px5 = PX5()

try:
  px5.connect()
except PX5Exception:
  for te in px5.errors:
    print(te)

def some_action(some_val):
  try:
    px5.run_method(some_val)
  except PX5Exception:
    for te in px5.errors:
      print(te)
    exit()

def some_other_action(some_val):
  try:
    return px5.run_some_other_method(some_val)
  except PX5Exception:
    for te in px5.errors:
      print(te) 
    exit()

我是否只是用try / catch块过度了?我需要运行的每个单独的命令都可以轻松地拥有我想要以友好的方式捕获和显示的异常,而不是显示整个异常(基本上,如果您没有通过API,工具本身会显示它们直接使用CLI。)

1 个答案:

答案 0 :(得分:2)

一种选择是制作包装器方法:

def print_errors(func, *args, **kwargs):
    try:
        return func(*args, **kwargs)
    except PX5Exception:
        for te in px5.errors:
            print(te)

然后每次代替try / except块,你只需要换行:

print_errors(px5.run_some_other_method, some_val)