是否可以捕获警告并选择从警告停止的地方继续?

时间:2018-06-27 00:16:43

标签: python request python-requests

有没有一种方法可以在python中使用警告或异常,从而让我提高控制力,然后从中断的地方开始学习?

def foo():
    #make a request
    r = request.get('someRestAPI')
    # get the data from request
    data = r.json()
    # determine the number of results the request will return
    num_results = data['num_results']
    if num_results > 1000:
         # raise a warning to be handled main
         # continue if the main doesn't catch
    results = []
    endpoint = data['next_page']
    while endpoint:
         # request the next page
         r = request.get(endpoint )
         data = r.json()
         results.append(data['result'])
         endpoint = data['next_page']

 def main():
     try:
         foo()
     catch warning:
         cont = input("Warning Over 1000 results, Continue?")
         if cont == 'y':
              # return to function call and continue

以上示例的目标是显示可能的用例。我向REST API发出了初始请求,并确定了该请求将给出的结果数。如果结果太多,那么我想将控制权暂时传递给程序的另一个区域,以确定是否应该继续。

我知道该程序可以通过不同的结构来实现,但是我很好奇是否有一种方法可以通过对调用它的函数进行升高或警告来给予控制,然后允许它从它离开的地方继续执行。关闭。

1 个答案:

答案 0 :(得分:1)

我认为有一个更好的解决方案,您不应该在实际发生错误/异常时就需要异常等。

首先:创建更多的模块化。我个人更喜欢做很多有意义的功能。病了,你会快速转换。

def main():
  data = get_data()
  if data['num_results'] > 1000:
    cont = input("Warning Over 1000 results, Continue?")
    if cont == 'y':
      results = process_data(data)
  if results is not None:
    #do things.

def get_data():
  r = request.get('someRestAPI')
  return r.json()

def process_data(data):
  results = []
  endpoint = data['next_page']
  while endpoint:
    # request the next page
    r = request.get(endpoint )
    data = r.json()
    results.append(data['result'])
    endpoint = data['next_page']
  return results

if __name__ == "__main__":
  main()

现在这不能回答问题,但是可以重新组织代码以使其更加流畅,并且不需要任何例外。