gpt4 book ai didi

python - Django 使用 try : and except:

转载 作者:行者123 更新时间:2023-11-28 22:49:42 24 4
gpt4 key购买 nike

我想知道是否可以编写一个处理异常的方法,比如处理 2 个或更多异常,但要执行不同的任务。

我正在使用 Django==1.6.1Python 2.7

try:
foo_instance = foo.objects.get(field_name='unknown')

except foo.DoesNotExist:
new_rec = foo.objects.create(field_name='unknown')
new_rec.save()

foo_instance = foo.objects.get(field_name='unknown')

except foo.MultipleObjectsReturned:
foo_list = foo.objects.filter(field_name='unknown')
for record in foo_list[1:]:
print 'Deleting foo id: ', record.id
record.delete()

foo_instance = foo.objects.get(field_name='unknown')

最佳答案

您可以使用多个 try: except: 但在您当前的情况下为什么不使用 get_or_create

try: expect: 包含“Exception”上的所有错误。因为这个语法是全部

except Exception as e:

get_or_create(defaults=None, **kwargs)

A convenience method for looking up an object with the given kwargs(may be empty if your model has defaults for all fields), creating oneif necessary.

Returns a tuple of (object, created), where object is the retrieved orcreated object and created is a boolean specifying whether a newobject was created.

这会将您的上述代码减少为 -

 obj, created = foo.objects.get_or_create(field_name='unknown')
if created:
obj.save()

我认为 get_or_create 提高了 IntegrityErrorMultipleObjectsReturned , 处理这些只需尝试将其包装起来:

try:
obj, created = foo.objects.get_or_create(field_name='unknown')
if created:
obj.save()
except IntegrityError:
#do something
except MultipleObjectsReturned:
#do something else
except Exception as e:
raise e

关于python - Django 使用 try : and except:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com