Python 将try/except的except部分分离到函数中

Python 将try/except的except部分分离到函数中,python,try-except,Python,Try Except,我有一个try/except,我经常在代码中重复except部分。这使我相信最好将except部分分离为函数 下面是我的用例: try: ... except api.error.ReadError as e: ... except api.error.APIConnectionError as e: ... except Exception as e: ... 我将如何将此逻辑分离为一个函数,以便可以执行以下简单操作: try: ... except: my_erro

我有一个try/except,我经常在代码中重复except部分。这使我相信最好将except部分分离为函数

下面是我的用例:

try:
  ...
except api.error.ReadError as e:
  ...
except api.error.APIConnectionError as e:
  ...
except Exception as e:
  ...
我将如何将此逻辑分离为一个函数,以便可以执行以下简单操作:

try:
  ...
except:
  my_error_handling_function(e)

只需定义函数:

def my_error_handling(e):
    #Do stuff
def my_error_handling(e):
    #Handle exception
…并将
异常
对象作为参数传入:

try:
    #some code
except Exception as e:
    my_error_handling(e)
仅使用一个通用的
异常
类型将允许您拥有一个
except
子句,并在处理函数中处理和测试不同的错误类型

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

type(e).__name__
它将打印名称,例如
ValueError
IOError
,等等。

定义您的函数:

def my_error_handling(e):
    #Do stuff
def my_error_handling(e):
    #Handle exception
按照你的建议去做:

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

您可以通过获取函数中异常“e”的类型来处理逻辑。请参阅:

我建议重构代码,使try/except块只出现在单个位置


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

您正在尝试/除了不是catch没有分配任何要传递的值
e
,也没有任何指定的
异常
类型,但在这一点上,我的错误处理函数如何知道对3种不同的异常情况执行什么逻辑?@MichaelSmith我更新了我的帖子,包括了检查sorry,忘了包括e的定义。我理解这一部分,但我不确定我的错误处理(e)是什么在我的第三次使用中cases@MichaelSmith您只需执行
if
语句来检查
if类型(e)。\uuuu name\uuuu==“ReadError”
这就是我要找的!很快就会尝试一下。制作一个自定义错误类,这样您就可以捕获单一类型的错误如何?如果处理方式相同,您不必单独捕获每个异常:
,除了(api.error.ReadError,api.error.APIConnectionError,exception)作为e:
,如果处理方式不同,不要用一个函数来处理所有的函数。