将try / except的一部分除去为函数

时间:2016-06-28 19:06:56

标签: python try-except

我有一个尝试/除了我在我的代码中经常重复除部分。这让我相信将除部分分成函数会更好。

以下是我的用例:

<wls:weblogic-web-app ...>
    ...
    <wls:container-descriptor>
         <wls:prefer-application-packages>
             <wls:package-name>net.sf.ehcache</wls:package-name>
         </wls:prefer-application-packages>
     </wls:container-descriptor>
</wls:weblogic-web-app>

我如何将这个逻辑分离成一个函数,这样我就可以做一些简单的事情:

try:
  ...
except api.error.ReadError as e:
  ...
except api.error.APIConnectionError as e:
  ...
except Exception as e:
  ...

3 个答案:

答案 0 :(得分:1)

只需定义功能:

def my_error_handling(e):
    #Do stuff

...并传入exception对象作为参数:

try:
    #some code
except Exception as e:
    my_error_handling(e)

只使用通用Exception类型,您将拥有一个except子句,并处理和测试处理函数中的不同错误类型。

为了检查捕获的异常的名称,您可以通过执行以下操作来获取它:

type(e).__name__

将打印名称,例如ValueErrorIOError

答案 1 :(得分:0)

定义你的功能:

def my_error_handling(e):
    #Handle exception

做你提出的建议:

try:
  ...
except Exception as e:
  my_error_handling_function(e)

您可以通过在函数中获取异常“e”的类型来处理逻辑。请参阅:python: How do I know what type of exception occurred?

答案 2 :(得分:0)

我建议重构您的代码,以便try / except块只出现在一个位置。

例如,带有send()方法的API类似乎是包含您在问题中描述的错误处理逻辑的合理候选者。