How to improve code clarity in nested try-except-else clauses?

后端 未结 3 832
庸人自扰
庸人自扰 2021-01-20 05:19

Sometimes I have a cascade of different things I can try to accomplish a task, e. g. If I need to get a record I can first try to find the record, and if this fails, I can c

3条回答
  •  长情又很酷
    2021-01-20 05:52

    I think following code is more readable and clean. Also I am sure in real problem we need some parameters to be sent to "find_record" and "create_record" functions like id, some, values to create new record. The factory solution need those parameters also be listed in tuple

    def try_create(else_return):
        try:
            record = create_record()
        except CreateFailed:
            record = else_return
            logger.info("Using a tape now")
        else:
            logger.info("Created a new record")
    
    def try_find(else_call= try_create, **kwargs):
        try:
            record = find_record()
        except NoSuchRecord:
            try_create(**kwargs)
        else:
            logger.info("Record found") 
    
    
    
    try_find(else_call=try_create, else_return=tape)
    

提交回复
热议问题