在Django中,IntegrityError异常可能是由多种原因引起的。
有时,此错误意味着唯一的冲突。在其他时候,这可能是由某些外键检查引起的。
当前,我们只能通过将异常转换为文本来了解根本原因:
(1062, "Duplicate entry '79d3dd88917a11e98d42f000ac192cee-not_created' for key 'fs_cluster_id_dir_e8164dce_uniq'")
但这对于程序识别非常不友好。代码有什么方法可以识别异常的根本原因?
例如,如果我知道这是由独特的冲突引起的,那么我可以告诉客户端这是由于某些资源已经存在而引起的。如果我知道这是由于外键不存在引起的,我可以告诉客户端这是由于某些未创建的父资源引起的。
那么有什么好的方法可以通过代码识别原因吗?
答案 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