【问题标题】:How can I create a separate function just to handle exceptions generated by the requests library?如何创建一个单独的函数来处理请求库生成的异常?
【发布时间】:2023-03-04 00:23:01
【问题描述】:

我是 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 == requests.exceptions.Timeout。

我还能做些什么来分离那个异常处理部分?我的目标是编写模块化代码!

【问题讨论】:

    标签: python exception modular-design


    【解决方案1】:

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

    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"
    

    这应该可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多