如何创建一个单独的函数来处理由请求库生成的异常?

问题描述

我是python软件开发的新手。我创建了一个脚本,其中包含许多函数,这些函数返回请求的输出并处理由它们生成的异常。功能之一。如下:

def ApiResponse(emailHash):
    r=None
    errorMessage = ""
    url = "https://dummy.com" 
    try:
        r = requests.get(url,timeout = TIMEOUT_LIMIT)
    except requests.exceptions.Timeout as e:
        errorMessage = "Timeout Error"
    except requests.ConnectionError as e:
        errorMessage = "ConnectionError"
    except requests.RequestException as e:
        errorMessage = "Some other Request Exception"
    return r 

我有许多这样的函数,它们针对不同的请求返回响应。但是,它们都重复了异常处理代码。我想在另一个函数中分别处理异常,这样我就不必重复自己了。我已经尝试过类似将变量“ e”传递给其他函数并将其与异常类型进行比较并相应地返回不同的错误消息的尝试,但是我似乎无法进行比较,比如说,e == request.exceptions.Timeout。

我还可以做些什么来仅将异常处理部分分开?我的目标是编写模块化代码

解决方法

我发现的一种方法是将错误的类型与错误进行比较。例如上述情况。

def exception_handler(e):
    if type(e) is requests.exceptions.ConnectTimeout:
        return "Timeout Error"
    elif type(e) is requests.ConnectionError:
        return "ConnectionError"
    else:
        return "Some other Request Exception"

这应该有效