有什么办法在Django中处理IntegrityError吗?

时间:2019-06-19 03:32:37

标签: django

在Django中,IntegrityError异常可能是由多种原因引起的。

有时,此错误意味着唯一的冲突。在其他时候,这可能是由某些外键检查引起的。

当前,我们只能通过将异常转换为文本来了解根本原因:

(1062, "Duplicate entry '79d3dd88917a11e98d42f000ac192cee-not_created' for key 'fs_cluster_id_dir_e8164dce_uniq'")

但这对于程序识别非常不友好。代码有什么方法可以识别异常的根本原因?

例如,如果我知道这是由独特的冲突引起的,那么我可以告诉客户端这是由于某些资源已经存在而引起的。如果我知道这是由于外键不存在引起的,我可以告诉客户端这是由于某些未创建的父资源引起的。

那么有什么好的方法可以通过代码识别原因吗?

1 个答案:

答案 0 :(得分:0)

不知道好。

您需要确定代码中的确切原因吗?如果出于效率考虑,您想避免每次都避免使用其他处理方式,则可以编写以下代码:

try:
   # the simple way
except IntegrityError as simplefail:
   try:
      # the complicated way
   except IntegrityError as complexfail:
      # log this utter failure and re-raise one or other of the caught errors