Cha*_*iam 3 python django exception-handling python-2.7
我想知道是否可以编写一个处理异常的方法,例如 2 个或更多,除了要执行不同的任务。
我正在使用 Django==1.6.1和Python 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')
Run Code Online (Sandbox Code Playgroud)
您可以使用多个,try: except:但在您当前的情况下为什么不使用get_or_create?
尝试:期望:包含“异常”上的所有错误。因为这个语法就是全部
except Exception as e:
Run Code Online (Sandbox Code Playgroud)
get_or_create(defaults=None, **kwargs)
一种使用给定 kwargs 查找对象的便捷方法(如果您的模型对所有字段都有默认值,则可能为空),必要时创建一个。
返回一个 (object, created) 元组,其中 object 是检索或创建的对象, created 是一个布尔值,指定是否创建了新对象。
这将您上面的代码减少到 -
obj, created = foo.objects.get_or_create(field_name='unknown')
if created:
obj.save()
Run Code Online (Sandbox Code Playgroud)
我认为get_or_createraiseIntegrityError或MultipleObjectsReturned, 来处理那些简单地将它包装在一个 try 中:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13761 次 |
| 最近记录: |